int main(int argc, char *argv[])
{
int c = EOF;
FILE *fp = fopen("./temp.txt", "r");
assert(fp!=NULL);
while (1) {
c = fgetc(fp);
if (EOF != c) {
putchar(c);
}
}
return 0;
}
TEMP.TXT是一個緩慢增加的日誌文件,因此該程序可以讀取EOF。在第一次遇到EOF後,我認爲它應該停止獲取 temp.txt的新增數據,而它只是像tail -f temp.txt
一樣行爲並繼續打印文件的新行。爲什麼這個節目表現得像'尾巴-f`
是的,我知道有一個無限循環。問題是,我認爲,當 龜etc首先遇到EOF,應該做一些記錄在struct FP, 和龜etc下一個召喚應該檢查這一點,並立即返回EOF。 爲什麼它會繼續讀取磁盤上的數據,是不是到達文件結尾? 這是預期的行爲?
嘗試 '其他{打破;}' – Ishmeet
更好地寫出:'而((C =龜etc(FP))= EFO! ){putchar(c);}' –
你顯然是將你的程序與Glibc鏈接起來。如果你將它與uClibc鏈接起來,它會在EOF之後第一次調用fgetc時崩潰。 EOF之後的文件讀取未指定。 – andyn