以下代码输出“test”。它不应该只打印“te”,因为只有两个字节分配给x?
char *x = malloc(sizeof(char)*2);
x = "test";
printf("%s",x);
strcopy如何正确完成这项工作?
答案 0 :(得分:0)
实际上,如果在调用之前和之后打印x的值:
x = "test";
你会看到它已经改变了。通过丢失已分配内存的轨道,您将面临内存泄漏。
此外,printf打印一个从指针位置开始的字符串,直到找到字符串终止'\ 0'(0)。
建议的解决方案:
char* x = malloc(5); /* sizeof(char) is always equal to 1 */
strcpy(x, "test");