我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:
我的结果是空的,
但是如果我使用这个:
我发现了一个非常有趣的问题。
当我使用以下代码时:
int main() {
char * in = "hi, ";
char str[10];
strncpy(str, in, 2);
printf("output = %s", str);
return 0;
}
我的结果是空的,
printf
没有起作用。但是如果我使用这个:
int main() {
char * in = "hi, ";
char * str = malloc(sizeof(char) * 10) ;
strncpy(str, in, 2);
printf("output = %s", str);
return 0;
}
我可以得到我所期望的。
为什么会发生这种情况?是因为堆栈和堆吗?它究竟如何产生如此巨大的差异?