Stream-E/A
Diese Funktionen verarbeiten die Daten in verschiedenen Größen und Formate, angefangen bei einzelnen Zeichen bis hin zu großen Datenstrukturen. Darüber hinaus verwenden sie Pufferung, wodurch die Leistung verbessert werden kann. Die Standardgröße eines Streamingpuffers beträgt 4 KB. Diese Routinen wirken sich nur auf Puffer aus, die von den Routinen der Laufzeitbibliothek erstellt wurden. Sie haben keine Auswirkungen auf die vom Betriebssystem erstellten Puffer.
Stream-E/A-Routinen
Routine | Zweck |
---|---|
clearerr , clearerr_s |
Fehlerindikator für Stream löschen |
fclose |
Stream schließen |
_fcloseall |
Alle geöffneten Streams schließen, außer stdin , stdout und stderr |
_fdopen , wfdopen |
Stream dem Dateideskriptor der geöffneten Datei zuordnen |
feof |
Test für das Dateiende (End-of-File) im Stream |
ferror |
Test für Fehler im Stream |
fflush |
Stream in den Puffer oder in das Speichergerät leeren |
fgetc , fgetwc |
Zeichen aus Stream lesen (Funktionsversionen von getc und getwc ) |
_fgetchar , _fgetwchar |
Zeichen aus stdin lesen (Funktionsversionen von getchar und getwchar ) |
fgetpos |
Positionsindikator des Streams abrufen |
fgets , fgetws |
Zeichenfolge aus dem Stream lesen |
_fileno |
Dateideskriptor abrufen, der dem Stream zugeordnet ist |
_flushall |
Alle Streams in den Puffer oder das Speichergerät leeren |
fopen , , _wfopen fopen_s _wfopen_s |
Stream öffnen |
fprintf , , _fprintf_l fwprintf , _fwprintf_l , fprintf_s , _fprintf_s_l , , fwprintf_s _fwprintf_s_l |
Formatierte Daten in Stream schreiben |
fputc , fputwc |
Ein Zeichen in einen Stream schreiben (Funktionsversionen von putc und putwc ) |
_fputchar , _fputwchar |
Zeichen in stdout schreiben (Funktionsversionen von putchar und putwchar ) |
fputs , fputws |
Zeichenfolge in Stream schreiben |
fread |
Nicht formatierte Daten aus Stream lesen |
freopen , , _wfreopen freopen_s _wfreopen_s |
FILE -Streamzeiger für neue Datei oder neues Gerät zuweisen |
fscanf , , fscanf_s fwscanf , _fscanf_s_l , , fwscanf_s _fwscanf_s_l |
Formatierte Daten aus Stream lesen |
fseek , _fseeki64 |
Dateiposition an angegebenen Speicherort verschieben |
fsetpos |
Positionsindikator des Streams festslegen |
_fsopen , _wfsopen |
Stream mit Dateifreigabe öffnen |
ftell , _ftelli64 |
Aktuelle Dateiposition abrufen |
fwrite |
Nicht formatierte Datenelemente in Stream schreiben |
getc , getwc |
Zeichen aus Stream lesen (Makroversionen von fgetc und fgetwc ) |
getchar , getwchar |
Zeichen aus stdin lesen (Makroversionen von fgetchar und fgetwchar ) |
_getmaxstdio |
Gibt die Anzahl der Dateien an, die auf der E/A-Ebene des Streams gleichzeitig geöffnet sein können. |
gets_s , _getws_s |
Zeile aus stdin lesen |
_getw |
Binäres int aus Stream lesen |
printf , , _printf_l , wprintf ,_wprintf_l , _printf_s_l printf_s , wprintf_s _wprintf_s_l |
Formatierte Daten in stdout schreiben |
putc , putwc |
Zeichen in einen Stream schreiben (Makroversionen von fputc und fputwc ) |
putchar , putwchar |
Zeichen in stdout schreiben (Makroversionen von fputchar und fputwchar ) |
puts , _putws |
Zeile in Stream schreiben |
_putw |
Binäres int in Stream schreiben |
rewind |
Dateiposition an den Anfang des Streams verschieben |
_rmtmp |
Von tmpfile erstellte temporäre Dateien entfernen |
scanf , , _scanf_l , wscanf ,_wscanf_l , _scanf_s_l scanf_s , wscanf_s _wscanf_s_l |
Formatierte Daten aus stdin lesen |
setbuf |
Streampufferung steuern |
_setmaxstdio |
Maximale Anzahl der Dateien festlegen, die auf der E/A-Ebene des Streams gleichzeitig geöffnet sein können. |
setvbuf |
Streampufferung und Puffergröße steuern |
_snprintf , , _snprintf_s _snwprintf , _snprintf_s_l , , _snwprintf_s _snwprintf_s_l |
Formatierte Daten der angegebenen Länge in Zeichenfolge schreiben |
_snscanf , , _snscanf_s _snwscanf , _snscanf_s_l , , _snwscanf_s _snwscanf_s_l |
Lesen von formatierten Daten einer angegebenen Länge aus dem Standardeingabestream. |
sprintf , , sprintf_s swprintf , _sprintf_s_l , , swprintf_s _swprintf_s_l |
Formatierte Daten in Zeichenfolge schreiben |
sscanf , , swscanf sscanf_s , _sscanf_s_l, , , swscanf_s _swscanf_s_l |
Formatierte Daten aus Stream lesen |
_tempnam , _wtempnam |
Temporären Dateinamen im angegebenen Verzeichnis generieren |
tmpfile , tmpfile_s |
Temporäre Datei erstellen |
tmpnam , , _wtmpnam tmpnam_s _wtmpnam_s |
Temporären Dateinamen generieren |
ungetc , ungetwc |
Zeichen zurück in den Stream verschieben |
_vcprintf , , _vcprintf_s _vcwprintf , _vcprintf_s_l , , _vcwprintf_s _vcwprintf_s_l |
Formatierte Daten in die Konsole schreiben |
vfprintf , , vfprintf_s vfwprintf , _vfprintf_s_l , , vfwprintf_s _vfwprintf_s_l |
Formatierte Daten in Stream schreiben |
vprintf , , vprintf_s vwprintf , _vprintf_s_l , , vwprintf_s _vwprintf_s_l |
Formatierte Daten in stdout schreiben |
_vsnprintf , , _vsnwprintf vsnprintf_s , _vsnprintf_s , _vsnprintf_s_l , , _vsnwprintf_s _vsnwprintf_s_l |
Formatierte Daten der angegebenen Länge in Puffer schreiben |
vsprintf , , vsprintf_s vswprintf , _vsprintf_s_l , , vswprintf_s _vswprintf_s_l |
Formatierte Daten in Puffer schreiben |
Wenn ein Programm mit der Ausführung beginnt, öffnet der Startcode automatisch mehrere Streams: Standardeingabe (auf die von stdin
verwiesen wird), Standardausgabe (auf die von stdout
verwiesen wird) und Standardfehler (auf den von stderr
verwiesen wird). Diese Streams werden standardmäßig an die Konsole (Tastatur und Bildschirm) weitergeleitet. Verwenden Sie freopen
, um stdin
, stdout
oder stderr
an eine Datenträgerdatei oder ein Gerät umzuleiten.
Dateien, die mit den Streamroutinen geöffnet werden, werden standardmäßig gepuffert. Die stdout
Funktionen stderr
werden immer dann geleert, wenn sie voll sind oder wenn Sie nach jedem Bibliotheksaufruf auf ein Zeichengerät schreiben. Wenn ein Programm nicht normal beendet wird, werden Ausgabepuffer möglicherweise nicht geleert, sodass es zu einem Verlust von Daten kommt. Verwenden fflush
Oder _flushall
um sicherzustellen, dass der puffer, der einer angegebenen Datei zugeordnet ist, auf das Betriebssystem geleert wird, oder alle geöffneten Puffer werden geleert. Das Betriebssystem kann Daten zwischenspeichern, bevor sie auf den Datenträger geschrieben werden. Das Commit-to-Disk-Feature stellt sicher, dass der geleerte Pufferinhalt nicht verloren geht, wenn ein Systemfehler auftritt.
Es gibt zwei Möglichkeiten, ein Commit des Pufferinhalts auf den Datenträger durchführen:
Stellen Sie eine Verknüpfung mit der Datei „COMMODE.OBJ“ her, um eine globale Commitkennzeichnung festzulegen. Die Standardeinstellung der globalen Kennzeichnung ist
n
(dies steht für "no-commit").Legen Sie die Moduskennzeichnung auf
c
fest. Verwenden Sie hierzufopen
oder_fdopen
.
Jede Datei, die ausdrücklich entweder mit der c
- oder der n
-Kennzeichnung geöffnet wird, weist das für die Kennzeichnung spezifische Verhalten auf, und zwar unabhängig von der globalen Kennzeichnung für ein Commit/No-Commit.
Wenn Ihr Programm einen Datenstrom nicht explizit schließt, wird der Datenstrom automatisch geschlossen, wenn das Programm beendet wird. Sie solltne einen Stream nach dem Beenden des Programms jedoch schließen, da die Anzahl der Streams, die gleichzeitig geöffnet sein können, begrenzt ist. Informationen zu diesem Grenzwert finden Sie _setmaxstdio
unter.
Die Eingabe kann nur dann direkt auf die Ausgabe folgen, wenn zwischenzeitlich ein Aufruf von fflush
oder einer dateipositionierenden Funktion (fseek
, fsetpos
oder rewind
) erfolgt. Die Eingabe kann von der Ausgabe ohne einen dazwischen liegenden Aufruf einer Dateipositionierungsfunktion gefolgt werden, wenn der Eingabevorgang auf das Ende der Datei trifft.
Siehe auch
Eingabe und Ausgabe
Universelle C-Laufzeitroutinen nach Kategorie