在C语言中学习getchar()
函数时,我发现这个EOF
被返回,我想知道它的存在是如何被注意到的,它存储在哪里?
我们可以明确键入EOF
字符吗?
答案 0 :(得分:3)
=IFERROR(INDEX(Sheet1!B:B,MATCH(C9,Sheet1!C:C,0)),MAX(Sheet1!B:B,B$8:B8)+1)
是文件结尾的缩写。它不是一个真实的角色,而更像是指示输入流结束的信号。
考虑EOF
,它曾用于从getchar()
获取字符(标准输入)。如何判断stdin
流何时结束?必须有一个特殊的返回值,它与任何有效字符都不同。 stdin
扮演这个角色。
要为EOF
生成EOF
,请在Unix系统上键入 Ctrl + D ,或在Windows上键入 Ctrl + Z 。
答案 1 :(得分:1)
EOF
是从 stdio 输入流中读取时应用于文件结尾的命名常量。如果您查看getchar()
原型,您会首先注意到一些奇怪的事情是它返回的不是char
值,而是int
。通常情况下,EOF
会转换为某个负整数值(历史-1
),这意味着无法从键盘/输入文件生成该字符。
当然,EOF
常量不是一个字符,int
值 getchar(3)会在文件结束时返回。这也是 getchar(3)返回int
而不是char
值的原因。这也是始终EOF
映射到负值的原因。
getchar(3)会返回257个可能值中的一个,0
最多为255
和EOF (通常为{{1} })。作为整数值查看,-1
与-1
不同。它是C中最古老的实现函数之一(它自K& R的第一版“C编程语言”以来就存在)
答案 2 :(得分:0)
EOF是abbr。用于文件结束。这是表示您已经到达正在读取文件流的文件末尾的特殊字符。
通常,人们通过以下方式检查他们是否已到达文件末尾:
while(!feof(fileStream)) {
// read one line here or so
...
// do your stuff here.
...
}