我有以下 C 代码片段,必须识别错误并建议一种更安全的编写方法:
char somestring[] = "Send money!\n";
char *copy;
copy = (char *) malloc(strlen(somestring));
strcpy(copy, somestring);
printf(copy);
所以错误是 strlen 忽略'\0'
了字符串的尾随,因此不会为副本分配足够的内存,但我不确定他们在更安全地编写它方面的目的是什么?
我可以使用malloc(strlen(somestring)+1))
我假设,但我认为必须有比这更好的方法?
编辑:好的,我已经接受了一个答案,我怀疑我们不会期望 strdup 解决方案,因为它不是 ANSI C 的一部分。这似乎是一个相当主观的问题,所以我不确定我是否有接受其实是最好的。无论如何感谢所有的答案。