什么是C编程语言中的EOF?

什么是C编程语言中的EOF?

你怎么看到最后一个印刷品?换句话说,EOF需要投入什么?我检查了定义,它说EOF是-1。

如果你输入Ctrl-D,你将看不到任何东西。

#include <stdio.h>int main() {
 int c;
 while((c = getchar() != EOF)) {
  printf("%d\n", c);
 }
 printf("%d - at EOF\n", c);}


胡说叔叔
浏览 550回答 3
3回答

九州编程

在Linux系统和OS X上,输入以导致EOF的字符是Ctrl-&nbsp;D。对于Windows,它是Ctrl-&nbsp;Z。根据操作系统的不同,此字符仅在一行中的第一个字符(即第一个字符)后才起作用Enter。由于控制台输入通常是面向行的,因此系统可能无法识别EOF字符,直到您使用了Enter。是的,如果该角色被识别为EOF,那么您的程序将永远不会看到实际的角色。相反,一个C程序将得到-1从getchar()。

蝴蝶刀刀

您应该将括号更改为while((c&nbsp;=&nbsp;getchar())&nbsp;!=&nbsp;EOF)因为“=”运算符的优先级低于“!=”运算符。然后你会得到预期的结果。你的表达等于while&nbsp;(c&nbsp;=&nbsp;(getchar()!=&nbsp;EOF))你得到两个1作为输出,因为你正在进行比较“c!= EOF”。这将始终成为您输入的字符的一个,然后通过点击返回后面的“\ n”。除了最后一次比较,其中c确实是EOF,它会给你一个0。关于EOF的编辑:EOF通常为-1,但标准不保证这一点。该标准仅在7.19.1节中定义了EOF:EOF扩展为整数常量表达式,类型为int和负值,由多个函数返回以指示文件结束,即不再有来自流的输入;假设EOF等于-1是合理的,但是当使用EOF时,不应该测试特定值,而是使用宏。

一只萌萌小番薯

EOF的值是一个负整数,以区别于0到255范围内的“char”值。它通常为-1,但它可以是任何其他负数......根据POSIX规范,所以你不应该假设它是-1。^ D字符是您在UNIX / Linux上的控制台流中键入的内容,以告诉它逻辑上结束输入流。但在其他情况下(例如,当您从文件中读取时),它只是另一个数据字符。无论哪种方式,^ D字符(意味着输入的结尾)永远不会成为应用程序代码。正如@Bastien所说,如果getchar()失败也会返回EOF&nbsp;。严格来说,您应该调用ferror或feof查看EOF是表示错误还是流结束。但在大多数情况下,无论哪种情况,您的应用程序都会做同样的事情
打开App,查看更多内容
随时随地看视频慕课网APP