Freigeben über


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, stdoutund 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, , _wfopenfopen_s_wfopen_s Stream öffnen
fprintf, , _fprintf_lfwprintf, _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, , _wfreopenfreopen_s_wfreopen_s FILE -Streamzeiger für neue Datei oder neues Gerät zuweisen
fscanf, , fscanf_sfwscanf, _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_lprintf_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 tmpfileerstellte temporäre Dateien entfernen
scanf, , _scanf_l, wscanf,_wscanf_l , _scanf_s_lscanf_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_sswprintf, _sprintf_s_l, , swprintf_s_swprintf_s_l Formatierte Daten in Zeichenfolge schreiben
sscanf, , swscanfsscanf_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, , _wtmpnamtmpnam_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_svfwprintf, _vfprintf_s_l, , vfwprintf_s_vfwprintf_s_l Formatierte Daten in Stream schreiben
vprintf, , vprintf_svwprintf, _vprintf_s_l, , vwprintf_s_vwprintf_s_l Formatierte Daten in stdout schreiben
_vsnprintf, , _vsnwprintfvsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, , _vsnwprintf_s_vsnwprintf_s_l Formatierte Daten der angegebenen Länge in Puffer schreiben
vsprintf, , vsprintf_svswprintf, _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 stdinverwiesen wird), Standardausgabe (auf die von stdoutverwiesen wird) und Standardfehler (auf den von stderrverwiesen wird). Diese Streams werden standardmäßig an die Konsole (Tastatur und Bildschirm) weitergeleitet. Verwenden Sie freopen , um stdin, stdoutoder 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 hierzu fopen 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, fsetposoder 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