【发布时间】:2014-05-19 01:48:23
【问题描述】:
我对 C 编程非常陌生,我正在尝试了解 fflush(stdin) 的真正工作原理。
在以下示例中,fflush(stdin) 是清除所有缓冲区还是清除第三项之后输入的任何内容?我的意思是用户输入帐号、空格、姓名、空格、余额。从现在开始,用户输入的任何内容都会被fflush(stdin) 刷新,这是真的吗? stdin 不会为空。
为什么这么说是因为它进入了一个while循环并开始写入文本文件。
我的第二个问题是Ctrl-Z 是否会告诉操作系统停止要求用户输入输入?
printf( "Enter the account name and balance. (separated by spaces)\n" );
printf( "Enter EOF to end input. (Ctrl-Z)\n" );
printf( "? " );
scanf( "%d%s%lf", &account, name, &balance );
fflush(stdin);
// write account, name and balance into file with fprintf
while ( !feof( stdin ) )
{
//fflush(stdin);
fprintf( cfPtr, "%d %s %.2f\n", account, name, balance );
printf( "? " );
scanf( "%d%s%lf", &account, name, &balance );
}
fclose( cfPtr );
【问题讨论】:
-
fflush(stdin);是未定义的行为。不要这样做,不要从那些这样做的人那里复制它。 stackoverflow.com/questions/2979209/using-fflushstdin -
@chrk 不同意添加“linux”标签。 OP 的帖子中没有任何内容是特定于 Linux 的。
-
@chrk 是的还原。标签是针对帖子的主题,而不是针对寻找的人的类型。
标签: c operating-system signals