赋值by = sign和strcpy之间的区别

时间:2014-07-22 02:32:55

标签: c mingw

以下代码输出“test”。它不应该只打印“te”,因为只有两个字节分配给x?

char *x = malloc(sizeof(char)*2);
x = "test";
printf("%s",x);

strcopy如何正确完成这项工作?

1 个答案:

答案 0 :(得分:0)

实际上,如果在调用之前和之后打印x的值:

x = "test";

你会看到它已经改变了。通过丢失已分配内存的轨道,您将面临内存泄漏。

此外,printf打印一个从指针位置开始的字符串,直到找到字符串终止'\ 0'(0)。

建议的解决方案:

char* x = malloc(5);    /* sizeof(char) is always equal to 1 */
strcpy(x, "test");