Freigeben über


_fsopen, _wfsopen

Öffnet einen Stream mit 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
    Name der Datei zum Öffnen.

  • mode
    Zugriffstyp zulässig.

  • shflag
    Typ der Freigabe können.

Rückgabewert

Jede dieser Funktionen gibt einen Zeiger zum Stream zurück. Ein NULL-Zeigerwert gibt einen Fehler an. Wenn filename oder modeNULL oder eine leere Zeichenfolge ist, rufen diese Funktionen den ungültigen Parameterhandler auf, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen NULL zurück und stellen errno auf EINVAL ein.

Weitere Informationen zu diesen und anderen Fehlercodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.

Hinweise

Die _fsopen-Funktion wird die Datei, die von filename als Stream angegeben wird und bereitet die Datei für nachfolgende freigegebene Lesen oder Schreiben vor, wie durch den Modus und die Argumente shflag definiert. _wfsopen ist eine Breitzeichen-Version von _fsopen; filename und mode für Argumente an _wfsopen sind Zeichenfolgen mit Breitzeichen. _wfsopen und _fsopen verhalten sich andernfalls identisch.

Die Zeichenfolge mode gibt den Zugriffstyp angefordert nach der Datei, wie in der folgenden Tabelle gezeigt.

Begriff

Definition

"r"

Öffnet zum Lesen. Wenn die Datei nicht vorhanden ist oder nicht gefunden werden kann, schlägt der _fsopen-Aufruf fehl.

"w"

Öffnet eine leere Datei zum Schreiben. Wenn die angegebene Datei vorhanden ist, wird ihr Inhalt zerstört.

"a"

Öffnet sich zum Schreiben am Ende der Datei (Anfügen); erstellt die Datei zuerst, wenn es nicht vorhanden ist.

"r+"

Öffnet sowohl zum Lesen als auch zum Schreiben. (Die Datei muss vorhanden sein.)

"w+"

Öffnet eine leere Datei zum Lesen und Schreiben. Wenn die angegebene Datei vorhanden ist, wird ihr Inhalt zerstört.

"a+"

Öffnet sich für das Lesen und das Anfügen; erstellt die Datei zuerst, wenn es nicht vorhanden ist.

Die Typen "w" und "w+" sind mit Vorsicht zu verwenden, da sie vorhandene Dateien zerstören können.

Wenn eine Datei mit dem "a" oder "a+" geöffnet Zugriffstyp ist, wenden alle Schreibvorgänge am Ende der Datei auf. Der Dateizeiger kann mit fseek oder rewind neu angeordnet werden, wird aber immer wieder am Ende der Datei verschoben, bevor ein Schreibvorgang durchgeführt wird. Folglich können vorhandene Daten nicht überschrieben werden. Wenn "r+", "w+" oder "a+" Zugriffstyp, angegeben wird, wird das Lesen und Schreiben zulässt (die Datei soll für Aktualisierungs- geöffnet). Beim Umschalten zwischen Lesen und Schreiben, muss es dazwischenliegendes fsetpos, fseek oder Rückspulen Vorgang geben. Bei Bedarf kann die aktuelle Position für den Vorgang fsetpos oder fseek angegeben werden. Neben den obigen Werten kann Folgendes Zeichen in mode enthalten sind, um den Übersetzungsmodus für neue Zeilen und für Dateiverwaltung anzugeben.

Begriff

Definition

t

Öffnet eine Datei im Modus des Texts (übersetzt). In diesem Modus werden Kombinationen von Wagenrücklauf-Zeilenvorschub (CR-LF) in einzelne Zeilenvorschübe (LF) auf Eingaben übersetzt und Zeilenvorschubzeichen werden zu CR-LF-Kombinationen auf Ausgabe übersetzt. Außerdem wird STRG+Z bei der Eingabe als EOF-Zeichen interpretiert. In den Dateien, die zum Lesen oder das Lesen und Schreiben geöffnet sind, überprüft _fsopen für STRG+Z am Ende der Datei und entfernt sie, sofern möglich. Dies geschieht, da die Anwendung u von fseek und ftell, die in einer Datei zu ersetzen, die mit STRG+Z beendet, fseek wurde, sich neben das Ende der Datei nicht ordnungsgemäß verhält.

b

Öffnet eine Datei im binären (unübersetzten) Modus; die oben beschriebenen Übersetzungen unterdrückt werden.

S

Gibt an, dass das Zwischenspeichern für den sequenziellen Zugriff vom Datenträger optimiert, aber nicht darauf beschränkt ist.

R

Gibt an, dass das Zwischenspeichern für den zufälligen Zugriff vom Datenträger optimiert, aber nicht darauf beschränkt ist.

T

Gibt an, dass eine Datei temporär ist. Wenn möglich, wird sie nicht auf den Datenträger geschrieben.

D

Gibt an, dass eine Datei temporär ist. Sie wird gelöscht, wenn der letzte Dateizeiger geschlossen wird.

Wenn t oder b nicht in mode angegeben wird, wird der Übersetzungsmodus durch die StandardModusvariable _fmode definiert. Wenn dem Argument t oder b vorangestellt wird, schlägt die Funktion fehl und gibt NULL zurück. Eine Erörterung von Text- und Binärmodi finden Sie unter Text- und Binärmodus-Datei-E/A.

Das Argument shflag ist ein konstanter Ausdruck das Bestehen der folgenden Manifestkonstanten, die in Share.h.

Begriff

Definition

_SH_COMPAT

Legt Kompatibilitätsmodus für 16-Bit-Anwendungen fest.

_SH_DENYNO

Ermöglicht die Lese- und Schreibzugriff.

_SH_DENYRD

Verweigert Lesezugriff auf die Datei.

_SH_DENYRW

Verweigert Lese- und Schreibzugriff auf die Datei.

_SH_DENYWR

Verweigert Schreibzugriff auf die Datei.

Zuordnung generischer Textroutinen

Tchar.h-Routine

_UNICODE und _MBCS nicht definiert

_MBCS definiert

_UNICODE definiert

_tfsopen

_fsopen

_fsopen

_wfsopen

Anforderungen

Funktion

Erforderlicher Header

Optionale Header

_fsopen

<stdio.h>

<share.h>

Für Manifest Konstante für Parameter shflag.

_wfsopen

<stdio.h> oder <wchar.h>

<share.h>

Für Manifest Konstante für Parameter shflag.

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