繁体   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