我在使用指针将一个字符串复制到另一个字符串时遇到错误。
#include<iostream>
#include<string>
using namespace std;
void String_copy(char* scr,char* des)
{
while(*scr!='\0')
{
*des= *scr;
scr++;
des++;
}
}
int main()
{
char *str1, *str2;
str1="bharath";
str2="ygftygyfrgtg";
String_copy(str1,str2);
cout<<str1<<endl;
cout<<str2<<endl;
system("pause");
return 0;
}
最佳答案
在下面的代码中你有未定义的行为:
char *str1, *str2;
str1="bharath";
str2="ygftygyfrgtg";
你应该只将字符串文字分配给const* char
,这也意味着你不应该修改 str 和 str2
您可以通过以下方式解决上述问题:
char str1[] = "bharath";
char str2[] = "ygftygyfrgtg";
但您还必须修复 String_copy
- 以便它检查正在修改的数组的边界,即。添加最大长度为 des
的附加参数,也不要忘记在末尾添加 '\0`。
关于c++ - 在 C++ 中使用指针复制字符串,在复制过程中程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33763243/