为什么将更大的缓冲区大小传递给编译器允许的fgets

时间:2014-05-15 12:24:07

标签: c fgets

我有以下代码:

char str[0]; // 0 length

while(fgets(str, 100, stdin)) { // It works.
   fputs(str, stdout);
}

但是,如果我没有循环,那么它会中断。像这样;

  fgets(str, 100, stdin); 
   fputs(str, stdout); 

1 个答案:

答案 0 :(得分:0)

因为您的代码调用了未定义的行为(您使fgets()写入缓冲区的末尾),所以它可以做任何事情。