gpt4 book ai didi

c - C中的基本流处理

转载 作者:行者123 更新时间:2023-11-30 17:43:43 26 4
gpt4 key购买 nike

我只是对 C 中的基本流处理感到困惑。即使在谷歌搜索和阅读这个问题一个小时之后,我也没有更明智(这不是我第一次尝试深入研究这个问题)。我试图从输入中读取数字,直到达到 EOF 或非数字,并能够区分这两个。据我了解,这应该可行,但是 feofferror 条件永远不会为真。这是为什么 ?有人可以为我提供一个工作代码片段以及一个虚拟友好的深入解释吗?

#include <stdio.h>
#include <stdlib.h>

int main()
{
int number;
printf("number or EOF:\n");

while(scanf("%d",&number) == 1)
{
printf("read number %d\n",number);
}
if(ferror(stdin))printf("error reading\n");
else if (feof(stdin))printf("eof reached\n");
return 0;
}

最佳答案

我对流行为的理解问题源于一个小特点。我不知道在 Windows 控制台中存在一个新的不友好的歧义,如果您输入像 12 23 ^Z/enter/ 这样的输入,则 Ctrl+Z 可以读取 ASCII 0x1A,但会读取为正确的 EOF,当你执行12 23/enter/^Z/enter/。这段代码解决了这个问题

#include <stdio.h>
#include <stdlib.h>

int main()
{


printf("int or eof\n");
int num;
while( scanf("%d",&num) ==1 )
{
printf("the read number is %d \n",num);
}
if(!feof(stdin) && getchar()!=0x1A)//first check if its read as EOF,
//if it fails, call getchar for help to check for ^Z
{
printf("non-int error\n");
}
else printf("eof ok\n");
system("PAUSE");
return 0;

对于这个误导性的问题,我深表歉意。

关于c - C中的基本流处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20180637/

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