
求高人帮我看看这个C++哪里出错
#include<iostream>usingnamespacestd;voidprintString(constchar*str);intgetLength(const...
#include<iostream>
using namespace std;
void printString(const char* str);
int getLength(const char* str);
void copyString(const char* sourceStr,char* destStr);
int main()
{
char* sourceStr = "abcdefg";
cout<<"Source string is: ";
printString(sourceStr);
int length = getLength(sourceStr);
cout<<endl<<"Length of source string is: "<<length<<endl;
char* destStr;
destStr=new char[length+1];
copyString(sourceStr,destStr);
cout<<"Dest String is: "<<*destStr<<endl;
delete destStr;
system("pause");
return 0;
}
void printString(const char* str)
{
while (1)
{
if (*str!='\0')
{
cout<<*str;
}
if (*str=='\0')
{
break;
}
str++;
}
}
int getLength(const char* str)
{
int n=0;
while(*str++)
{
n++;
}
return n;
}
void copyString(const char* sourceStr,char* destStr)
{
char* a;
char* b;
*a=sourceStr;
*b=destStr;
while(*a!='\0')
{
*b=*a;
a++;
b++;
}
*destStr='\0';
cout<<"Dest String is: "<<b<<endl;
}
而且出现这种窗口。。 展开
using namespace std;
void printString(const char* str);
int getLength(const char* str);
void copyString(const char* sourceStr,char* destStr);
int main()
{
char* sourceStr = "abcdefg";
cout<<"Source string is: ";
printString(sourceStr);
int length = getLength(sourceStr);
cout<<endl<<"Length of source string is: "<<length<<endl;
char* destStr;
destStr=new char[length+1];
copyString(sourceStr,destStr);
cout<<"Dest String is: "<<*destStr<<endl;
delete destStr;
system("pause");
return 0;
}
void printString(const char* str)
{
while (1)
{
if (*str!='\0')
{
cout<<*str;
}
if (*str=='\0')
{
break;
}
str++;
}
}
int getLength(const char* str)
{
int n=0;
while(*str++)
{
n++;
}
return n;
}
void copyString(const char* sourceStr,char* destStr)
{
char* a;
char* b;
*a=sourceStr;
*b=destStr;
while(*a!='\0')
{
*b=*a;
a++;
b++;
}
*destStr='\0';
cout<<"Dest String is: "<<b<<endl;
}
而且出现这种窗口。。 展开
4个回答
展开全部
需要修改两行,能够排除错误
void copyString(const char* sourceStr,char* destStr)
{
char* a;
char* b;
a = const_cast<char*>(sourceStr); //*a此处表示一个字符,而sourceStr是指针
b=destStr;//*b此处表示一个字符,而sourceStr是指针
while(*a!='\0')
{
*b=*a;
a++;
b++;
}
*destStr='\0';
cout<<"Dest String is: "<<b<<endl;
}
const char 赋值给char需要转换,见代码。望采纳,若有疑问,请追问。。
更多追问追答
追问
一定要a=const_cast(sourceStr)吗。。 跟b=destStr一样的模式不
追答
你的函数定义是这样的:void copyString(const char* sourceStr,char* destStr)
sourceStr的类型是const char*,destStr的类型是char*,如果想跟b=destStr一样的模式,那么就把函数申明里的const char*改为char*
类型不同的时候,赋值必须要类型转换,否则只能修改定义了,没有其他的方法
展开全部
void copyString(const char* sourceStr,char* destStr)
{
char* a;
char* b;
*a=sourceStr;
*b=destStr;
这里的类型对应有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根据你的错误: 无法把 字符串指针转化为字符
你告诉别人那个地方出错了,别人哪有时间帮你一个个找了
你告诉别人那个地方出错了,别人哪有时间帮你一个个找了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*a=sourceStr;
*b=destStr;
改为:
a=(char*)sourceStr;
b=destStr;
即可
*b=destStr;
改为:
a=(char*)sourceStr;
b=destStr;
即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询