【发布时间】:2021-06-25 22:27:42
【问题描述】:
我正在尝试通过fgets 从键盘循环(一次又一次地)获取一个数字。但它只在循环的第一次获得数字。然后程序不再要求号码(我的意思是她不让我输入号码)并退出。
while(1){
printf("Option: ");
char buf[4];
if(buf == fgets(buf,4,stdin)){
int ret;
ret = sscanf(buf,"%d",&num);
if(ret!=1)
exit(0);
}
}
【问题讨论】:
-
您输入的数字有多大?如果您输入的字符超过 3 个,则第二次调用
fgets()将处理输入的其余部分。 -
您提供的输入是什么?超过 99 个?
-
不只是数字 1 或 2
-
可能是打印问题?
printf是行缓冲的,直到在字符串中看到换行符或调用fflush时才会输出。你可以试试:printf("Option: "); fflush(stdout);? -
请创建一个minimal reproducible example。显示您使用的输入、您获得的相应实际输出和预期输出。我无法用问题中的代码 sn-p 重现问题。见onlinegdb.com/SyIt1AJrd