部分声明7.9.13/7
:c99
在程序启动时,预定义了三个文本流并且不需要显式打开 - 标准输入(用于读取常规输入)、标准输出(用于写入常规输出)和标准错误(用于写入诊断输出)。
最初打开时,标准错误流没有完全缓冲;当且仅当可以确定流不引用交互式设备时,标准输入和标准输出流才被完全缓冲。
所以这是有道理的。如果您将标准输出推送到文件,您希望它完全缓冲以提高效率。
但是当您无法确定设备是非交互式的(即,正常输出到终端)时,我在标准中没有提到输出是行缓冲的还是非缓冲的。
我问的原因是对我的回答的评论,fflush(stdout);
我应该在这两个语句之间插入一个:
printf ("Enter number> ");
// fflush (stdout); needed ?
if (fgets (buff, sizeof(buff), stdin) == NULL) { ... }
因为我没有printf
用换行符终止。任何人都可以清除这个吗?