【发布时间】:2014-06-21 05:11:16
【问题描述】:
我尝试了以下代码并得到了分段错误-
int size=30;
char *str;
fputs(fgets(str,size,STDIN),STDOUT);
但是当我运行它时 -
buff=fgets(str,size,STDIN);
fputs(buff,STDOUT);
它工作得很好。此外,如果我对 str 使用 malloc,则运行第一个代码。我不明白这是怎么回事。
【问题讨论】:
-
我怀疑
fgets的返回使用了内部缓冲区(或者可能是某些编译器特定的优化效果(魔术))。在您的第一种情况下,尽管您没有任何缓冲区,因为str只是一个指针而不是缓冲区。
标签: c segmentation-fault malloc fgets fputs