Avrong
@Avrong

Почему fgets() работает раньше printf()?

#include <stdio.h>

int main()
{
    char myString[100]; // длинная строка
    printf( "Введите длинную строку: " );
    fgets( myString, 100, stdin ); // считываем из потока ввода строку
    printf( "Вы ввели следующую строку: %s", myString );
    getchar();
    return 0;
}
  • Вопрос задан
  • 216 просмотров
Решения вопроса 1
@Northewind
engineer
Все функции выполняются строго в том порядке, в котором вы их прописали. Другое дело, что сообщение, выводимое первым printf ( ) может появляться позже, чем, собственно, чтение fgets ( ).
Связано это с тем, что printf ( ) пишет строку в поток stdout, который использует построчный буферезированный вывод. Т.е. печать на терминал фактически осуществляется когда встречается символ новой строки.
Это поведение можно изменить с помощью функции setvbuf ( ).
В вашем случае также можно просто использовать fflush ( stdout ) для принудительной записи содержимого буфера в поток.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы