Проблемы с fflush (stdout);

Я начал программировать и узнал о команде fflush(stdout);. Я понимаю, зачем мне это нужно для большинства платформ, но все еще задаю себе несколько вопросов ...

1. Разве \n не должна буферизоваться в msys2, потому что она буферизуется по строке? (Mintty)

2. Почему мне нужно использовать его в Eclipse, когда мне не нужно использовать его в Clion?

3. Я единственный, кто борется с этой проблемой, ОСОБЕННО на Eclipse и Msys2?

Изменить: 3.1. Я спрашиваю, потому что мне не нужен fflush (stdout); на компьютерах с Windows в моей школе. Это почему?


person Ender    schedule 25.10.2016    source источник
comment
на самом деле это ничего не меняет, заканчиваются ли мои выходные данные printf на \ n или нет. Это просто не отображается на экране. Но даже если я не введу \ n в Clion, он все равно покажет мне вывод в терминале IDE.   -  person Ender    schedule 25.10.2016
comment
Добро пожаловать в чудесный мир IDE. Я еще не нашел хорошей IDE для использования на Mac, но я антиквариат и не нашел хорошей IDE для использования где-либо еще. Есть проблемы с тем, как Eclipse обрабатывает «терминальный ввод-вывод» для программ C. Вопрос по этой теме был в последние месяц или два; найти это будет боль. (И Windows работает по-другому, потому что это Windows.)   -  person Jonathan Leffler    schedule 25.10.2016
comment
Я слышал, что Xcode отлично подходит для Mac. Но я в Windows, так что дааааа ... (Я ДРУГАЯ!)   -  person Ender    schedule 25.10.2016
comment
В последнее время я видел, как многие новички пишут вывод с ведущими символами новой строки. Это сбрасывает предыдущий вывод, а не текущий. Вы этого не делаете? Вы помещаете символы новой строки ("\n") в конец?   -  person Some programmer dude    schedule 25.10.2016
comment
Зависит от того, на что указывает stdout. Обычно он наследуется от родительского процесса, и это может быть что угодно, включая файл (подумайте о перенаправлении > out). Некоторые терминальные системы имеют линейную буферизацию, некоторые - нет.   -  person cdarke    schedule 25.10.2016


Ответы (1)


[Этот ответ касается fflush(stdin) и на самом деле не является ответом.
fflush(stdout) не имеет неопределенного поведения.]

fflush используется для очистки буфера стандартного вывода и имеет неопределенное поведение. Иногда fflush не работает, и вместо этого лучше использовать fpurge.

Для получения дополнительной информации по вашему вопросу о поведении в Windows обратитесь к этой теме - Как Come fflush (stdin) не работает?

person Vishal B U    schedule 25.10.2016
comment
OP - это промывка stdout. Кроме того, fpurge не является стандартной функцией C. - person Some programmer dude; 25.10.2016