Jeśli realizacja biblioteka może określić strumień wyjściowy nie odnieść się do interaktywnego urządzenia (i tylko wtedy), strumień będzie w pełni buforowane, to znaczy będą kasowane gdy bufor (domyślnie z BUFSIZ
rozmiaru) jest pełna.
Jeśli nie w pełni buforowane, strumień może być linia buforowane, to zostanie ona zaczerwieniona gdy '\n'
jest napisane (lub bufor jest pełny, jeśli linia jest naprawdę długo) lub niebuforowana.
(ISO/IEC 9899: 1999, rozdział 7.19.5.3 "Funkcja fopen()
", pkt 7. Nie masz nowszą wersję standardu pod ręką, ale AFAIK ten nie uległ zmianie.)
To, co stanowi "urządzenie interaktywne", jest definiowane przez implementację. (Rozdział 5.1.2.3 "Realizacja programu", paragraf 6.)
Ogólna zasada mówi, że wyjście pliku powinno być w pełni zbuforowane, a wyjściowe wyjście buforowane liniowo (lub niebuforowane, jak słusznie zauważył Jesse Good).
Zarówno zasady buforowania, jak i rozmiar bufora można zmienić za pomocą setvbuf()
. Zauważ, że każda taka zmiana musi nastąpić przed możesz zacząć uzyskiwać dostęp do strumienia, co jest nieco oczywiste, gdy się nad tym zastanowisz.
To na pewno zależy od systemu operacyjnego. – Phonon
BTW faktycznie kod używa wxTextOutputStream, który używa wxFFileOutoutStream, który używa wxFFile. Ale to tylko enkapsuluje strukturę PLIKU, więc domyślam się, że mechanizm fflush jest tutaj interesujący ... – anhoppe
Jeśli jest buforowany, to jest przepłukiwany, gdy bufor jest pełny. I nie bardzo rozumiem, co masz na myśli przez strukturę PLIKU (fopen , fwrite, ...) –