Udostępnij za pośrednictwem


_fsopen, _wfsopen

Otwiera strumienia z udostępniania plików.

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

Parametry

  • filename
    Nazwa pliku do otwarty.

  • mode
    Typ dostępu jest dozwolone.

  • shflag
    Typ udostępnianie dozwolone.

Wartość zwracana

Każda z tych funkcji zwraca wskaźnik do strumienia.Wartość pusty wskaźnik wskazuje na błąd.Jeśli filename lub mode jest NULL lub pusty ciąg, te funkcje WYWOŁAJ nieprawidłowyparametr programu obsługi, zgodnie z opisem w Sprawdzanie poprawności parametru. Jeśli wykonanie może kontynuować, funkcje te zwracają NULL i errno do EINVAL.

Aby uzyskać więcej informacji na temat tych i innych kodów błędów, zobacz _doserrno, errno, _sys_errlist i _sys_nerr.

Uwagi

_fsopen funkcja otwiera w pliku określonym przez filename jako strumień i przygotowuje plik do kolejnych udostępnionego czytania lub pisania, zgodnie z definicją w trybie i shflag argumentów. _wfsopenjest to wersja szerokich znaków _fsopen; filename i mode argumenty funkcji _wfsopen są ciągami szerokich znaków._wfsopeni _fsopen zachowują się identycznie inaczej.

Ciąg znaków mode określa typ dostępu zażądał pliku, jak pokazano w poniższej tabeli.

Termin

Definicja

"r"

Zostanie otwarty do odczytu.Jeśli plik nie istnieje lub nie zostanie znaleziony, _fsopen wywołanie kończy się niepowodzeniem.

"w"

Otwiera pusty plik do zapisu.Jeśli dany plik istnieje, jego zawartość są niszczone.

"a"

Zostanie otwarty do zapisu na końcu pliku (dołączanie); tworzy plik najpierw, jeżeli nie istnieje.

"r+"

Otwiera zarówno Odczyt i zapis.(Plik musi istnieć).

"w+"

Otwiera pusty plik do zarówno odczytu i zapisu.Jeśli dany plik istnieje, jego zawartość są niszczone.

"a+"

Zostanie otwarty do odczytu i dołączanie; tworzy plik najpierw, jeżeli nie istnieje.

Użyj "w" i "w+" typy z opieki, jak ich zniszczenia, aby istniejące pliki.

Przy otwieraniu pliku z "a" lub "a+" dostępu typu zapis wszystkich operacji występuje na końcu pliku.wskaźnik pliku można prawymi za pomocą fseek lub rewind, ale jest zawsze przeniesiono go z powrotem do końca pliku przed napisać dowolną czynność jest przeprowadzana.W ten sposób nie można zastąpić istniejące dane.Gdy "r+", "w+", lub "a+" jest określony typ dostępu, zarówno odczytywania i zapisywania są dozwolone (plik jest określane jako otwarty for aktualizacja).Jednak podczas przełączania między odczytu i zapisu, musi istnieć interwencji fsetpos, fseek, lub przewijania do tyłu operacji.Bieżąca pozycja mogą być określone dla fsetpos lub fseek operacji, jeśli jest to konieczne.Oprócz powyższych wartości jednego z następujących znaków można zawarte w mode określić tryb translacji dla nowych wierszy i zarządzanie plikami.

Termin

Definicja

t

Otwiera plik w trybie tekstowym (tłumaczenie).W tym trybie przewozu return–line paszy kombinacji (CR LF) zostały przetłumaczone na pojedynczy wiersz źródła danych (LF) na wejściu i znaki LF są tłumaczone na kombinacji CR LF na wyjściu.Również CTRL + Z jest interpretowana jako znaku końca pliku na dane wejściowe.W przypadku plików otwartych do odczytu lub zapisu/odczytu _fsopen sprawdza, czy klawisze CTRL + Z końcem pliku i usuwa go, jeśli to możliwe.Robi się, ponieważ korzysta z fseek i ftell Przenieś plik, który może spowodować kończy się na CTRL + Z fseek do niewłaściwe w pobliżu końca pliku.

b

Otwiera plik w trybie dane binarne (nieprzetłumaczony); Powyższe tłumaczenia są pomijane.

S

Określa, że buforowanie jest zoptymalizowany pod kątem, ale nie są ograniczone do dostępu sekwencyjnego z dysku.

R

Określa, że buforowanie jest zoptymalizowany pod kątem, ale nie są ograniczone do dostępie z dysku.

T

Określa plik jako tymczasowe.Jeśli to możliwe, nie jest opróżniany z dysku.

D

Określa plik jako tymczasowe.Skreśla się podczas ostatniego pliku wskaźnik jest zamknięty.

Jeśli t lub b nie znajduje się w mode, tryb translacji określany jest domyślny tryb zmienna**_fmode**. Jeśli t lub b jest prefiksem do argument, Niepowodzenie funkcja i zwraca NULL.Omówienie trybów tekstowych i dane binarne , zobacz tekstu i binarny tryb We/Wy pliku.

argument shflag jest wyrażenie stałe, składający się z jednego z następujących stałych manifest , określonych w Share.h.

Termin

Definicja

_SH_COMPAT

Ustawia tryb zgodności dla aplikacji 16-bitowych.

_SH_DENYNO

Zezwolenia na uprawnienia odczytu i zapisu.

_SH_DENYRD

Odmawia dostęp do odczytu do pliku.

_SH_DENYRW

Uprawnienie Odczyt i zapis do pliku.

_SH_DENYWR

Uprawnienie do zapisu w pliku.

Tekst rodzajowy rutynowych mapowania

Procedura TCHAR.h

_UNICODE i _MBCS nie zdefiniowane

_MBCS, definicja

_UNICODE, definicja

_tfsopen

_fsopen

_fsopen

_wfsopen

Wymagania

Funkcja

Wymaganego nagłówek

Opcjonalna nagłówki

_fsopen

<stdio.h>

<share.h>

manifest stałej dla shflag parametr.

_wfsopen

<stdio.h> lub <wchar.h>

<share.h>

manifest stałej dla shflag parametr.

Przykład

// 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" );
}
  

Odpowiednik w programie .NET Framework

Zobacz też

Informacje

Strumień we/wy

fclose, _fcloseall

_fdopen, _wfdopen

ferror

_fileno

fopen, _wfopen

freopen, _wfreopen

_open, _wopen

_setmode

_sopen, _wsopen