_fsopen, _wfsopen
Öffnet einen Stream mit den Datenzugriff.
FILE *_fsopen(
const char *filename,
const char *mode,
int shflag
);
FILE *_wfsopen(
const wchar_t *filename,
const wchar_t *mode,
int shflag
);
Parameter
filename
Der Name der zu öffnenden Datei.mode
Art des Zugriffs zulässig.shflag
Der Typ der Freigabe zulässig.
Rückgabewert
Jede dieser Funktionen gibt einen Zeiger auf den Stream zurück.Ein NULL-Zeiger-Wert gibt einen Fehler an.Wenn filename oder modeNULL oder eine leere Zeichenfolge ist, rufen diese Funktionen der ungültige Parameter für ein, z. B. in beschrieben Parametervalidierung.Wenn die Ausführung fortgesetzt werden kann, darf dieser Funktionen geben NULL festlegen und errno zu EINVAL.
Weitere Informationen über diese und andere Fehlercodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.
Hinweise
Die _fsopen Funktion öffnet die Datei, die von filename als Stream angegeben ist und bereitet die Datei für folgende freigegebene Lesen oder Schreiben vor, wie vom Modus und die shflag Argumenten definiert._wfsopen ist eine Breitzeichen-Version von _fsopen. mode Argumente an die filename und _wfsopen sind Zeichenfolgen mit Breitzeichen._wfsopen und _fsopen verhalten sich ansonsten unterscheiden.
Die Zeichenfolge mode gibt die Art des Zugriffs für die Datei angefordert, wie in der folgenden Tabelle gezeigt.
Begriff |
Definition |
---|---|
"r" |
Öffnet die zum Lesen.Wenn die Datei nicht gefunden werden kann oder nicht vorhanden _fsopen , schlägt der Aufruf fehl. |
"w" |
Öffnet eine leere Datei zum Schreiben.Wenn die angegebene Datei vorhanden ist, werden dessen Inhalt gelöscht. |
"a" |
Öffnet das zum Schreiben am Ende der Datei anfügen (); zuerst erstellt die Datei, wenn sie nicht vorhanden ist. |
"r+" |
Öffnet sich für Lese- und Schreibvorgänge.(Die Datei muss vorhanden sein.) |
"w+" |
Öffnet eine leere Datei für Lese- und Schreibvorgänge.Wenn die angegebene Datei vorhanden ist, werden dessen Inhalt gelöscht. |
"a+" |
Öffnet das zum Lesen und das Anfügen. zuerst erstellt die Datei, wenn sie nicht vorhanden ist. |
Verwenden Sie die "w" und "w+" Typen sorgfältig, deren vorhandene Dateien löschen können.
Wenn eine Datei mit dem "a" oder "a+" Zugriffstyp geöffnet wird, werden alle Schreibvorgänge am Ende der Datei auf.Der Dateizeiger kann mithilfe fseek oder rewindneu angeordnet werden jedoch immer wieder an das Ende der Datei verschoben werden, bevor jeder Schreibvorgang ausgeführt wird.Daher können vorhandene Daten nicht überschrieben werden.Wenn "r+", Zugriffstyp, oder "w+""a+" angegeben ist, wird das Lesen und Schreiben zulässt (die Datei soll nach Updates geöffnet).Beim jedoch zwischen Lese- und Schreibvorgänge wechseln, muss es intervenierendes fsetpos, fseekoder Rückspulen Vorgang sein.Die aktuelle Position kann für den fsetpos oder fseek Vorgang angegeben werden, wenn dies erforderlich ist.Neben den oben beschriebenen Werten kann eines der folgenden Zeichen in mode eingeschlossen werden, um den Modus für Übersetzungs für neue Zeilen und Dateiverwaltung anzugeben.
Begriff |
Definition |
---|---|
t |
Öffnet eine Datei im Modus des Texts (Verschiebung).In diesem Modus werden Kombinationen von Wagenrücklauf-Zeilenvorschubs (CR-LF) Zeilenvorschübe in einzelne Liniendiagrammgruppe (Zeilenvorschub) übersetzt und bei der Eingabe Zeilenvorschub-Zeichen werden CR-LF Kombinationen auf Ausgabe übersetzt.Außerdem STRG+Z wird als Dateiende Zeichen bei der Eingabe interpretiert.In den Dateien, die zum Lesen oder Lesen/Schreiben geöffnet werden, entfernt _fsopen Überprüfung auf STRG+Z am Ende der Datei und sie, sofern dies möglich ist.Dies geschieht, weil die Anwendung möglicherweise von fseek und ftell die Kommunikation innerhalb einer Datei, die mit STRG+Z beendet hat, fseek sich in der Nähe des Endes der Datei nicht ordnungsgemäß verhalten. |
b |
Öffnet eine Datei im Modus (Binary unübersetzten). die oben genannten Übersetzungen werden unterdrückt. |
S |
Gibt an, dass zwischenspeichernd für optimiert ist, aber nicht beschränkt, sequenzieller Zugriff vom Datenträger an. |
R |
Gibt an, dass zwischenspeichernd für optimiert ist, aber nicht beschränkt auf wahlfreier Zugriff vom Datenträger an. |
T |
Gibt eine Datei an, wie temporär.Wenn möglich, wird sie nicht auf den Datenträger geleert. |
D |
Gibt eine Datei an, wie temporär.Sie wird gelöscht, sobald der letzte Dateizeiger geschlossen wird. |
Wenn t oder b nicht in modeangegeben ist, wird der Modus Übersetzungs von der DEFAULT Modus Variable _fmodedefiniert.Wenn t oder b auf das Argument vorangestellt wird, bewirkt, dass die Funktion NULLund gibt diese zurück.Eine Erörterung Text- und binäre Daten ändert, finden Sie unter Text und Binärdatei-Modus-Datei E/A.
Das Argument shflag ist ein konstanter Ausdruck das Bestehen der folgenden Manifesten Konstanten, definiert in Share.h.
Begriff |
Definition |
---|---|
_SH_COMPAT |
Legt Kompatibilitätsmodus für 16-Bit-Anwendungen fest. |
_SH_DENYNO |
Lässt Lese- und Schreibzugriff. |
_SH_DENYRD |
Verweigert den Lesezugriff auf die Datei. |
_SH_DENYRW |
Verweigert Lese- und Schreibzugriff auf die Datei. |
_SH_DENYWR |
Verweigert Schreibzugriff auf die Datei. |
Zuweisung generischer Textroutinen
Tchar.h-Routine |
_UNICODE als auch _MBCS nicht definiert |
_MBCS definieren |
_UNICODE definiert |
---|---|---|---|
_tfsopen |
_fsopen |
_fsopen |
_wfsopen |
Anforderungen
Funktion |
Erforderlicher Header |
Optionale Header |
---|---|---|
_fsopen |
<stdio.h> |
<share.h> Eine Konstante für die Manifeste shflag Parameter. |
_wfsopen |
<stdio.h> oder <wchar.h> |
<share.h> Eine Konstante für die Manifeste shflag Parameter. |
Beispiel
// crt_fsopen.c
#include <stdio.h>
#include <stdlib.h>
#include <share.h>
int main( void )
{
FILE *stream;
// Open output file for writing. Using _fsopen allows us to
// ensure that no one else writes to the file while we are
// writing to it.
//
if( (stream = _fsopen( "outfile", "wt", _SH_DENYWR )) != NULL )
{
fprintf( stream, "No one else in the network can write "
"to this file until we are done.\n" );
fclose( stream );
}
// Now others can write to the file while we read it.
system( "type outfile" );
}
.NET Framework-Entsprechung
System:: EA:: FileStream:: FileStream