Tho*_*thy 15 c stdin stdout flush
当连接到终端时,stdout是行缓冲的,但我记得在某处读取(至少从stdin)将自动刷新stdout.我使用的所有C实现都已经完成了,但我现在无法在标准中找到它.
它确实有意义,它是这样的,否则代码如下:
printf("Type some input: ");
fgets(line, sizeof line, stdin);
Run Code Online (Sandbox Code Playgroud)
需要一个额外的 fflush(stdout);
那么stdout肯定会在这里刷新吗?
编辑:
正如几个回复所说,标准中似乎无法保证我的示例中的stdout输出将在从stdin读取之前出现,但另一方面,这个意图在(我的免费草稿副本)中说明了标准:
交互设备的输入和输出动态应按照7.19.3的规定进行.这些要求的目的是尽快出现无缓冲或行缓冲输出,以确保在程序等待输入之前实际出现提示消息.
(ISO/IEC 9899:TC2委员会草案 - 2005年5月6日,第14页).
所以似乎没有保证,但无论如何它可能适用于大多数实现.(著名遗言...)
要回答你的问题,你就需要额外fflush(stdout);的后printf()通话,以确保你的程序试图读取输入之前出现的提示.读书stdin不fflush(stdout);适合你.
| 归档时间: |
|
| 查看次数: |
4490 次 |
| 最近记录: |