首页 > 解决方案 > 不了解 C++ 中的 strcpy

问题描述

char* s1;
strcpy(s1,"smilehihi");
s1[6] = 'a';

当我编译时,VS没有任何错误。但是在运行时,我的代码出错了。我想我不太了解 strcpy

标签: c++pointersstrcpy

解决方案


这里的主要问题不是strcpy()函数,而是您没有为字符串本身分配任何内存的事实。如果我是你,我会做类似的事情

char* s1=(char*)malloc(SIZE); // the SIZE is the predefined maximum size of your string
strcpy(s1,"smilehihi");
s1[6] = 'a';

编辑:

作为建议,请考虑使用stpncpy(). 它有助于避免缓冲区溢出,并且在您的情况下,将帮助您避免超过最大大小char*

char * stpncpy(char * dst, const char * src, size_t len);

推荐阅读