在严格符合 C 标准的模式下生成的应用程序可能受某些库功能的行为更改的影响。例如,使用 cc -Xc 或 c89 编译模式编译的应用程序。下列库功能的行为已更改:
fgetc()
fgets()
fgetwc()
fgetws()
getc()
getchar()
gets()
getwc()
getwchar()
getws()
1990 C 标准的正式解释要求在设置文件结束条件后,后续输入操作中的文件不返回更多数据。例外情况是文件指针被重新定位或者应用程序已显式清除错误和文件结束标志。
所有其他编译模式的行为都保持不变。特别地,接口可在设置文件结束指示符后从流读取其他新写入的数据。
解决方法: 在流上调用 fseek() 或 clearerr() 以便在流上报告 EOF 条件后读取其他数据。