[英]getting infinite loop in c while using eof for specific value of input
只要將數據饋入整數,C中的以下代碼就可以接受整數。
#include<stdio.h>
#include<conio.h>
void main()
{
int x;
while(scanf("%d",&x)!=EOF)
{
printf("%d\n",x);
}
getche ();
}
它適用於整數輸入,但在輸入任何字符/浮點輸入時會變成無限循環。
如果scanf
未能解析任何輸入,它將把輸入保留在緩沖區中並返回0
。 由於錯誤的輸入將永遠不會離開緩沖區,除了返回EOF
,您無需檢查任何內容,因此循環將永遠繼續。
在Unix系統上,您可以使用ctrl + d發送EOF
由於函數讀取了一個字符,發現它不是一個數字,然后將其返回到再次從中讀取的緩沖區中,因此可能獲得了無限循環
int main()
{
int n;
int c;
scanf("%d", &n);
scanf("%c", &c);
printf("%d %c\n", n, c);
return 0;
}
如果您輸入“ a”,則標准輸出為“ 0 a”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.