Freigeben über


_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

Siehe auch

Referenz

Stream E/A

fclose, _fcloseall

_fdopen, _wfdopen

ferror

_fileno

fopen, _wfopen

freopen, _wfreopen

_open, _wopen

_setmode

_sopen, _wsopen