[英]Read() return value and EOF
我读到EOF定义如下:
#define EOF (-1)
那么为什么读取返回值是:
返回值:如果成功,则返回实际读取的字节数。 在读取文件结尾时,返回零。 否则,返回-1并设置全局变量errno以指示错误。
为什么它在读取文件结尾时不返回-1?
宏EOF
由标准C在<stdio.h>
定义,并由使用标准I / O流( FILE *
)的函数使用。
诸如read()
类的函数是POSIX的一部分,并在<unistd.h>
头中声明。 它们与标准I / O流无关,根本不使用EOF
。
EOF
宏用于从文件或标准输入读取单个字符的函数,并将其作为返回值返回(例如, getchar()
或fgetc()
)。 如果输入为空,则此类函数返回EOF
而不是字符,以告诉您不能读取任何字符。
您提到了read()
函数,该函数将一系列字符读入指定为参数的缓冲区。 在这种情况下,不需要EOF
值,因为此函数返回读取的字符数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.