gpt4 book ai didi

c - cc中如何使用EOF作为prime read

转载 作者:太空宇宙 更新时间:2023-11-04 05:33:01 24 4
gpt4 key购买 nike

为什么当我输入任何字母时 while 循环开始无限执行,而当我输入任何数字时它只执行一次。Scanf("%d",&a) 函数对任何数字返回 1,对任何字符或字符串返回 0。据我所知,EOF 不等于 1 和 0。

#include<stdio.h>
int main
{
int a;
while(scanf("%d",&a) != EOF)
{
printf("hi devender \n");
}
return 0;
}

最佳答案

// input buffer==> 42foo\n
scanf("%d", &a); // returns 1 (not EOF), a is now 42
// input buffer==> foo\n
scanf("%d", &a); // returns 0 (not EOF), see comments about a
// input buffer==> foo\n // no change
scanf("%d", &a); // returns 0 (not EOF)
// input buffer==> foo\n // no change
scanf("%d", &a); // returns 0 (not EOF)
// input buffer==> foo\n // no change
... ... infinite loop

简而言之,不要将scanf() 的返回值与EOF 进行比较;与预期分配的数量进行比较。

if (scanf("%d%s%d%d", &a, name, &b, &c) != 4) /* error */;

关于c - cc中如何使用EOF作为prime read,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53726189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com