Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
В каких случаях может возникнуть необходимость в использовании fflush?
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Функция Код: plaintext 1. 2. автоматически дозаписывает в поток информацию из буфера, в случае её наличия. Т.о. нет необходимости перед закрытием потока вызывать для него функцию Код: plaintext 1. 2. В связи с этим возник вопрос: в каких случаях нужно использовать функцию fflush? Исходя из того, что указанная функция определена в стандарте C89, я полагаю, что она для каких-то ситуаций всё же нужна. Поиском по www.stackoverflow.com нашёл это . В обозначенном тексте приводится цитата: C standardint fflush(FILE *ostream); ostream points to an output stream or an update stream in which the most recent operation was not input, the fflush function causes any unwritten data for that stream to be delivered to the host environment to be written to the file; otherwise, the behavior is undefined. Насколько я её понял, то в том случае, если на момент вызова fflush буфер не содержит данных, то поведение функции не определено... Ниже автор ответа пишет о том, что функцию fflush вообще не следует использовать. Если так, то почему данная функция присутствует в стандарте? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 10:28 |
|
||
|
В каких случаях может возникнуть необходимость в использовании fflush?
|
|||
|---|---|---|---|
|
#18+
Compositum, Т.о. нет необходимости перед закрытием потока вызывать для него функцию да, перед закрытием нет такой необходимости. но не перед закрытием она может появиться. все потоки, в том числе сетевые, буферизируются. Соответственно, дослать кусок данных в буфере нужно делать flush. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 11:41 |
|
||
|
В каких случаях может возникнуть необходимость в использовании fflush?
|
|||
|---|---|---|---|
|
#18+
Насчёт сей не скажу. А в других языках если вместо FileStream используется memory-stream то для получения его согласованного byte[]-представления нужно дёрнуть flush а потом только получить массив байтов. Close() в явном виде нельзя вызывать т.к. это очистит byte-буфер. Flush также полезно дёргать после вывода важного события записи в лог-файл. В противном случае читающий этот файл может не сразу увидеть это событие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 11:44 |
|
||
|
В каких случаях может возникнуть необходимость в использовании fflush?
|
|||
|---|---|---|---|
|
#18+
А как быть с "неопределённым поведением" (обозначенным мною выше)? Например, вы вызываете fflush, а буфер в это время пустой... Чем чревато такое поведение в данном случае, в чём оно может выражаться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 12:04 |
|
||
|
В каких случаях может возникнуть необходимость в использовании fflush?
|
|||
|---|---|---|---|
|
#18+
CompositumА как быть с "неопределённым поведением" (обозначенным мною выше)? Например, вы вызываете fflush, а буфер в это время пустой... Чем чревато такое поведение в данном случае, в чём оно может выражаться? Ничем, если буфер пуст, то ничего и не произойдёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 12:42 |
|
||
|
В каких случаях может возникнуть необходимость в использовании fflush?
|
|||
|---|---|---|---|
|
#18+
http://www.cplusplus.com/reference/cstdio/fflush/ function <cstdio> fflush int fflush ( FILE * stream ); Flush stream If the given stream was open for writing (or if it was open for updating and the last i/o operation was an output operation) any unwritten data in its output buffer is written to the file. If stream is a null pointer, all such streams are flushed. In all other cases, the behavior depends on the specific library implementation. In some implementations, flushing a stream open for reading causes its input buffer to be cleared (but this is not portable expected behavior). The stream remains open after this call. When a file is closed, either because of a call to fclose or because the program terminates, all the buffers associated with it are automatically flushed. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 12:45 |
|
||
|
В каких случаях может возникнуть необходимость в использовании fflush?
|
|||
|---|---|---|---|
|
#18+
Compositum В связи с этим возник вопрос: в каких случаях нужно использовать функцию fflush? Исходя из того, что указанная функция определена в стандарте C89, я полагаю, что она для каких-то ситуаций всё же нужна. Поиском по www.stackoverflow.com нашёл это. В том топике говорится о применении fflush к ВХОДНОМУ файлу. Выше я дал ссылку на описание функции, где однозначно говорится, что это непереносимо. Т.е. так делать нельзя. Возможно, в топике со stack профессор просто знал точно, на какой реализации будут работать его студенты и рекомендовал им делать так очистку ввода. Иначе её в общем непонятно как делать и на сколько я знаю переносимого способа нет. Это я к тому, что профессор мог быть и не так уж неправ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 12:51 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=68&tid=2019817]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 138ms |

| 0 / 0 |
