_fsopen, _wfsopen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu stdio.h - Index


Header-Datei

stdio.h, share.h

Kategorie

Eingabe-/Ausgaberoutinen

Prototyp

FILE *_fsopen(const char *filename, const char *mode, int shflag);

FILE *_wfsopen(const wchar_t *filename, const wchar_t *mode, int shflag);

Beschreibung

Öffnet einen Stream für den gemeinsamen Zugriff.

_fsopen öffnet die in filename angegebene Datei und verknüpft mit ihr einen Stream. _fsopen gibt einen Zeiger zurück, der in den folgenden Operationen dazu dient, den Stream zu identifizieren.

Der in Aufrufen von _fsopen verwendete String mode kann einen der folgenden Werte annehmen:

r Öffnet die Datei nur für den Lesezugriff. w Erstellt die Datei für Schreibzugriffe. Ist eine Datei mit diesem Namen schon vorhanden, wird sie überschrieben. a Anhängen; die Datei wird zum Schreiben am Ende der Datei geöffnet oder, wenn nicht vorhanden, für Schreibzugriffe erstellt. r+ Öffnet eine vorhandene Datei für die Aktualisierung (lesen und schreiben). w+ Öffnet eine neue Datei zum Aktualisieren (Lesen und Schreiben). Ist eine Datei mit diesem Namen bereits vorhanden, wird sie überschrieben. a+ Zum Anhängen öffnen; öffnet oder, wenn nicht vorhanden, erstellt eine Datei zum Aktualisieren am Ende der Datei.



Um anzugeben, dass eine gegebene Datei im Textmodus geöffnet oder erstellt wird, hängen Sie ein t an den String mode an (rt, w+t usw.). Für den Binärmodus hängen Sie entsprechend ein b an den String mode an (wb, a+b usw.). _fsopen erlaubt auch, das t oder b zwischen den Buchstaben und das Zeichen + im String mode einzufügen; rt+ entspricht beispielsweise r+t. Wird t oder b im String mode nicht angegeben, bestimmt die globale Variable _fmode den Modus. Ist _fmode auf O_BINARY gesetzt, werden Dateien im Binärmodus geöffnet. Ist _fmode auf O_TEXT gesetzt, werden Dateien im Textmodus geöffnet. Diese O_...-Konstanten sind in fcntl.h definiert.

Wird eine Datei zum Aktualisieren geöffnet, sind beim zugehörigen Stream Lese- und Schreibzugriffe zulässig. Allerdings ist Folgendes zu beachten:

  • Einer Ausgabe kann nicht direkt eine Eingabe folgen; dazwischen muss fseek oder rewind aufgerufen werden.
  • Nach einer Eingabe kann nicht direkt eine Ausgabe folgen, ohne dass dazwischen fseek oder rewind aufgerufen wird oder eine Eingabe erfolgt, die das Dateiende erreicht.

shflag gibt die Art des erlaubten gemeinsamen Zugriffs auf die Datei filename an. Die für shflag gültigen symbolischen Konstanten sind in share.h definiert.

SH_COMPAT

Legt den Kompatibilitätsmodus fest

SH_DENYRW

Verweigert den Lese-/Schreibzugriff

SH_DENYWR

Verweigert den Schreibzugriff

SH_DENYRD

Verweigert den Lesezugriff

SH_DENYNONE

Erlaubt den Lese-/Schreibzugriff

SH_DENYNO

Erlaubt den Lese-/Schreibzugriff



Rückgabewert

Bei erfolgreichem Abschluss gibt _fsopen einen Zeiger auf den neu geöffneten Stream zurück.

Im Fehlerfall wird NULL zurückgegeben.

Beispiel



 #include <io.h>
 #include <process.h>
 #include <share.h>
 #include <stdio.h>
 int main(void)
 {
   FILE *f;
   int status;
   f = _fsopen("TESTFILE.DAT", "r", SH_DENYNO);
   if (f == NULL)
   {
     printf("_fsopen failed\n");
     exit(1);
   }
   status = access("TESTFILE.DAT", 6);
   if (status == 0)
     printf("read/write access allowed\n");
   else
     printf("read/write access not allowed\n");
   fclose(f);
   return 0;
 }



Portabilität



POSIX Win32 ANSI C ANSI C++

_fsopen

+

_wfsopen

Nur NT