[英]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.