【发布时间】:2020-08-03 16:28:48
【问题描述】:
char* s1;
strcpy(s1,"smilehihi");
s1[6] = 'a';
当我编译时,VS 没有任何错误。但是在运行时,我的代码出错了。我想我对 strcpy 不是很了解
【问题讨论】:
-
你没有为s1分配任何空间
-
也许你想使用strdup?
-
这真是一道C题。 C++ 使用
std::string。 -
当我编译时,VS没有任何错误 -- 编译器只检查语法错误,而不是如果你的程序逻辑正确。
-
@tadman - 我同意 M.M 的观点。当初学者正在学习 C++ 并使用在 C++ 中有效的 C 构造时,然后告诉他们他们正在使用 C——一种语言,据他们所知,他们没有学习——并没有太大帮助。最好不要理会标签,解决问题,然后 - 酌情 - 鼓励使用 C++ 中更可取的替代方案(如使用
std::string)。