【发布时间】:2014-10-19 04:11:04
【问题描述】:
我尝试编写一个c程序来提示用户使用fgets()函数输入一个字符串。
这是代码:
#include <stdio.h>
#define MAXLEN 10
int main (void){
char buffer[MAXLEN];
puts("Enter text a line at a time;enter a blank to exit.");
while(fgets(buffer,MAXLEN,stdin) != NULL){
printf("%s",buffer);
if(buffer[0]=='\n')
break;
}
return 0;
}
我的问题是为什么程序仍然运行并且不会导致任何未定义的行为?自从
MAXLEN=10,当我输入一个长度超过 10 个字符的字符串时,编译器什么也不说,继续打印所有字符串。
【问题讨论】:
-
编译器在运行时从不告诉任何东西。
-
fgets()将拨打 9char并将其余的留在stdin以供下次通话。 -
@barakmanos 我的意思是在运行时,我已经编辑了我的问题@chux 我已经第二次调用 `fgets()' 并且程序仍然运行正确并且没有迹象表明剩余的字符串留在标准输入缓冲区。