Tag: eof

C – 读取scanf直到feof(stdin),不输出错误

我在我的程序中使用scanf()函数来扫描整数。 我这样做的方式是: while (!feof (stdin)) if (scanf(“%d”, &height) != 1) { puts(“Wrong input!”); return 1; } 问题是,在实际执行EOF之后,我得到了错误的输入并返回1,因为scanf没有返回1.我该如何解决这个问题?

常见的误解:文件末尾有一个EOF字符

我正在阅读“卡特的PC汇编语言”,我在第32页的脚注中看到了这句话让我很困惑! 如果我们假设文件末尾可能没有EOF(正如书中所说)是正确的陈述,那么我们如何才能找出文件末尾的位置? 它还产生了另一个问题:fseek是否使用EOF在文件中来回传递?

C编程:EOF作为一个角色

当为命令控制台编程C时,当你有一个试图使用SCANF向用户输入CHAR变量的函数,并且用户输入CTRL + Z (EOF)并命中输入时会发生什么? 例如: char promptChar() { char c; printf(“Enter a character: “); scanf(“%c”, &c); return c; } 如果用户键入CTRL + Z并按下Enter键,那么promptChar()会返回什么? 因为如果我理解EOF,它就是一个int。

getchar()不传递EOF,Ctrl + Z不会终止Cygwin上的程序

这是一个简单的程序,计算字符串,符号和单词。 使用Cygwin进行计算一切正常。 但是在启动时,在输入值之后,程序不会打印nc , nw , nl并等待输入更多值。 无论如何,将EOF更改为13(回车)无济于事。 ctrl + Z也很有用:程序停止,写[n]+ Stopped ,其中’n’总是不同的数字。 代码是 #include #define IN 1 #define OUT 0 int main () { char c; int state; int nc, nw, nl; state = OUT; while ((c=getchar()) != EOF) { nc++; if (c == ‘n’) nw++; if (c == ‘\n’ || c == ‘ […]

如何通过只输入一个EOF来结束scanf

我在讨论这个问题。 我正在使用while循环来扫描数字串,需要结束扫描并开始继续我的程序的其余部分。 我只是想不通,如何刷新标准输入或做任何事情都不按两次Ctrl + D. 我只需要发送一次EOF来告诉我的循环结束。 while (! feof (stdin)) {status=scanf (“%d”, &array[i]); if ( (status != 1 && status != EOF) ) { printf(“\nWrong input.\n”); return 1;} i++;}

测试getchar()== EOF不能按预期工作

我有一个编写“编写一个允许用户输入最多20个整数的C程序的任务(它将停止接受基于哨兵值或基于达到20个整数限制的数字)。程序应该显示数字以相反的顺序进入。“ 我决定将我的哨兵值设为“EOF”(或CTRL + D / CRTL + Z)。 我的代码有一些非常不稳定的行为: 您必须按两次EOF键(这也会创建一个在数组中计算的空白条目。 第一个条目的第一个数字被截断。 其他一切似乎都行不通,但这显然不是理想的结果。 以下是我的代码。 你能解释一下是什么问题吗? main() { int i,iMax; double dblMean; int x[MAX]; printf(“Please Enter Up to 20 Integers\n”); for (i=0; i “,i+1); if (getchar() == EOF) /* Check for CTRL+D OR CTRL+Z */ break; /* Exit loop if EOF entered :: Must be pressed twice […]

C中的EOF问题

我正在编写一个程序,它应该读取两个可以包含换行符和其他各种字符的字符串。 因此,我使用EOF(Ctrl-Z或Ctrl-D)结束字符串。 这适用于第一个变量,但是使用第二个变量,然而,这似乎是有问题的,因为显然某些东西卡在输入缓冲区中而用户无法输入任何内容。 我试着用while (getchar() != ‘\n’);清理缓冲区while (getchar() != ‘\n’); 和几个类似的变化,但似乎没有任何帮助。 所有清洁尝试都导致无限循环,如果没有清洁,添加第二个变量是不可能的。 这两个变量的字符都是在这样的循环中读取的: while((c = getchar()) != EOF) ,这表明它是我在缓冲区中停留的EOF。 或者它是否以其他方式影响程序的行为? 我正在使用的逻辑有什么问题吗? 经过几个小时的挣扎,我开始有点绝望了。 [编辑:下面添加代码] [编辑2:clearerr()似乎使这个EOF解决方案毕竟有效。 它似乎以我在Linux下的原始forms运行,我昨天在Windows上试用它。 码: #include #include int main(void) { int x = 0; int c; char a[100]; char b[100]; printf(“Enter a: “); while((c = getchar()) != EOF) { a[x] = c; x++; } […]

stdin中的文件结束

关于这个的问题已经在C中被问到文件结束(EOF),但它仍然没有完全解决我的问题。 在任何不是stdin数据流中, EOF对我有意义,例如,如果我有一些data.txt文件, fgetc()将读取所有字符并到达文件末尾并返回-1 。 我不明白的是stdin中EOF的概念。 如果我使用getchar() ,它将等待我输入内容,所以如果没有写入,文件结束,( EOF )不会自动返回? 那么只有用户可以通过按Ctrl + Z在stdin调用EOF吗? 如果是这样,那么在stdin中EOF一些用途是什么? 我猜它会告诉程序继续读取,直到用户调用文件结尾? 是这个吗? 谢谢

确定流结束时EOF问题

当我尝试使用函数feof(FILE *)确定文件结尾时,我发现它不能像我预期的那样工作:即使流结束也需要额外的读取。 例如,如果在读取10个字节之后在具有10个字节数据的文件上调用,则feof(FILE*)将不会告诉true。 我需要一个额外的读取操作,当然返回0,然后feof(FILE *)会说“好的,现在你到达终点”。 我的问题是为什么还需要一个read以及如何确定文件结尾或如何知道文件流中剩余多少字节如果我不想要feof style? 谢谢和最诚挚的问候。

使用C中的scanf在EOF退出while循环

我正在为我的入门C课程写一些非常小的课程。 其中一个要求我读取双倍值,每行一个数字,然后在EOF后打印出基本统计数据。 这是我的代码段,它给了我一些问题: double sample[1000000]; int result; double number; int i = 0; int count = 0; double sum = 0; double harmosum = 0; result = scanf(” %lf \n”, &number); double min = number; double max = number; while(result != EOF){ sample[i] = number; if(number max){ max = number; } sum += number; if(number […]