c++ - 在 C++ 中使用指针复制字符串,在复制过程中程序崩溃

标签 c++ visual-c++

我在使用指针将一个字符串复制到另一个字符串时遇到错误。

#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/

相关文章:

c++ - 在 C/C++ 中将 int* 转换为 int(*)[n]

c++ - 多线程和获取错误调用函数

xaml - VC++ Converter 不是命名空间的成员

c++ - 在 Release模式下不能正确执行相同的操作

成对初始化的 C++ vector - 编译错误

c++组合来自两个(或更多)参数包的值

c++ - 'operator<=' 中的 'i <= slovo' 不匹配

c++ - 在C++中通过套接字接收二进制数据

c++ - 在 Visual Studio 中为多个体系结构构建 Bullet Physics

windows - 当提供的缓冲区太小时返回哪个 HRESULT?