簡體   English   中英

使用eof作為輸入的特定值時在c中獲得無限循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM