2014-09-19 4 views
0

Нужно ли вызывать такие функции, как setbuf() и setvbuf(), когда я открываю FILE потоков для настройки буферизации?
Не обрабатывается ли буфера ввода-вывода автоматически?Требуется ли вручную буферизация?

+0

Что вы подразумеваете под "обязательным?" –

+0

Я имею в виду, это необходимо, извините за мой плохой английский – koder16

+0

Ваш английский - это хорошо! Но опять же, что вы подразумеваете под «необходимым»? Необходимое/обязательное _for что? _ –

ответ

2

Нет, буферизация обрабатывается автоматически, но , возможно, не в моде, которую вы хотите или нуждаетесь.

Возможно, вы захотите очистить каждую запись, только на новой строке, только на полном буфере, а по умолчанию неверно для вашего случая.

Или вам может понадобиться более мощный буфер для повышения эффективности.

Во всех этих случаях отрегулируйте значение по умолчанию.
Хотя, как правило, значение по умолчанию разумно и может быть оставлено в покое.

Вот случай, когда автоматический анализатор не сработали:
printf statement is not executing before scanf statement in netbean

2

Нет, это не является необходимым или обязательным.

Вы бы назвали только setbuf или setvbuf, если буферизация по умолчанию для этого потока не то, что вы хотите. Например, стандартный вывод обычно равен строка-буферизация, поэтому вывод не будет очищаться до тех пор, пока буфер не будет заполнен или вы не отправите символ новой строки. Если вы хотите, чтобы стандартный выход был небуферизованным (весь вывод отображается сразу), , то вам нужно будет использовать setbuf или setvbuf.

Смежные вопросы