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 | Verwendung |
---|---|
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 , fwscanf , fscanf_s , _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 , _printf_s_l , 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 , _scanf_s_l , 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 , _snwprintf , _snprintf_s , _snprintf_s_l , _snwprintf_s , _snwprintf_s_l |
Formatierte Daten der angegebenen Länge in Zeichenfolge schreiben |
_snscanf , _snwscanf , _snscanf_s , _snscanf_s_l , _snwscanf_s , _snwscanf_s_l |
Lesen von formatierten Daten einer angegebenen Länge aus dem Standardeingabestream. |
sprintf , swprintf , sprintf_s , _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 , _vcwprintf , _vcprintf_s , _vcprintf_s_l , _vcwprintf_s , _vcwprintf_s_l |
Formatierte Daten in die Konsole schreiben |
vfprintf , vfwprintf , vfprintf_s , _vfprintf_s_l , vfwprintf_s , _vfwprintf_s_l |
Formatierte Daten in Stream schreiben |
vprintf , vwprintf , vprintf_s , _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 , vswprintf , vsprintf_s , _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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für