某些程式庫函數的運作方式變更,將會影響到以嚴格的標準 C 一致性模式建置而成的應用程式。例如使用 cc -Xc 或 c89 編譯模式編譯而成的應用程式。下列程式庫函數的運作方式已變更:
fgetc()
fgets()
fgetwc()
fgetws()
getc()
getchar()
gets()
getwc()
getwchar()
getws()
1990 C 標準的正式轉譯要求,檔案結尾條件設定之後,後續的輸入作業不會從該檔案傳回任何資料。但當檔案指標的位置已重設或應用程式已明確地清除了錯誤或檔案結尾旗標時不在此列。
所有其他編譯模式的運作方式則維持不變。特別是,在檔案結尾指示器設定之後,介面可以從串流讀取新寫入之額外資料。
解決方法: 在串流上報告 EOF 條件之後,請於串流上呼叫 fseek() 或 clearerr(),以讀取其他資料。