Я очень новичок в программировании на C, и я пытаюсь понять, как действительно работает fflush(stdin)
.
В следующем примере fflush(stdin)
очищает весь буфер или очищает все, что было введено после третьего элемента? Я имею в виду, что пользователь вводит номер счета, пробел, имя, пробел, баланс. Это правда, что с этого момента все, что вводит пользователь, будет сброшено с помощью fflush(stdin)
? и stdin
не будет пустым.
Почему я говорю, что это потому, что он входит в цикл while и начинает писать в текстовый файл.
Мой второй вопрос: может ли Ctrl-Z
OS перестать запрашивать у пользователя ввод ввода?
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 );