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 otwarcia.

  • mode
    Dozwolony typ dostępu.

  • shflag
    Typ udostępniania dozwolone.

Wartość zwracana

Każda z tych funkcji zwraca wskaźnik do strumienia.Wartość null wskaźnika wskazuje na błąd.Jeśli filename lub mode jest NULL lub ciąg pusty, tych funkcji Wywołaj obsługę nieprawidłowy parametr, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może być kontynuowane, te funkcje zwracają NULL i ustawiają errno na EINVAL.

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

Uwagi

_fsopen Funkcja otwiera pliku określonego przez filename jako strumień i przygotowuje plik do kolejnych udostępnionego czytanie i pisanie, zgodnie z definicją w trybie i shflag argumentów._wfsopenjest to wersja szeroko charakter _fsopen; filename i mode argumentów do _wfsopen są ciągi znaków wide._wfsopen i _fsopen zachowują się identycznie w innych przypadkach.

Ciąg znaków mode Określa typ dostępu do tego pliku, jak pokazano w poniższej tabeli.

Termin

Definicja

"r"

Otwiera do odczytu.Jeśli plik nie istnieje lub nie można go znaleźć, wywołanie funkcji _fsopen kończy się niepowodzeniem.

"w"

Otwiera pusty plik do zapisu.Jeśli dany plik istnieje, jego zawartość zostaje zniszczona.

"a"

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

"r+"

Otwiera zarówno do odczytu, jak i do zapisu. (Plik musi istnieć).

"w+"

Otwiera pusty plik zarówno do odczytu, jak i do zapisu.Jeśli dany plik istnieje, jego zawartość zostaje zniszczona.

"a+"

Otwiera do czytania i dołączanie; najpierw tworzy plik, jeśli nie istnieje.

Należy używać typów "w" i "w+" z rozwagą, ponieważ mogą zniszczyć 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że być przeniesiony za pomocą fseek lub rewind, ale to jest zawsze przenoszony z powrotem do końca pliku było wpisywanie dowolną czynność jest przeprowadzana.W związku z tym nie można nadpisać istniejących danych.Gdy "r+", "w+", lub "a+" jest określony typ dostępu, zarówno do czytania i pisania są dozwolone (plik mówi się, że otwarta do aktualizacji).Jednak podczas przełączania między czytanie i pisanie, musi istnieć interwencji fsetpos, fseek, lub do tyłu operacji.Bieżąca pozycja może być określona dla operacji fsetpos lub fseek w razie potrzeby.Oprócz powyższych wartości, jeden z następujących znaków mogą być zawarte w mode Aby określić tryb translacji dla nowych wierszy i zarządzanie plikami.

Termin

Definicja

t

Otwiera plik w trybie tekstowym (translacji).W tym trybie przewozu return-line paszy (CR-LF) kombinacje są tłumaczone na pojedynczy wiersz źródła danych (LF) na wejściu i znaki wysuwu wiersza są tłumaczone na CR-LF kombinacji na wyjściu.Ponadto CTRL+Z jest interpretowany jako znak końca pliku na wejściu.W przypadku plików otwartych do odczytu lub zapisu/odczytu _fsopen sprawdza CTRL + Z końcem pliku i usuwa je, jeśli to możliwe.To zrobić, ponieważ za pomocą fseek i ftell Aby przenieść w pliku, który może powodować kończy CTRL + Z fseek będzie działać nieprawidłowo w pobliżu koniec pliku.

b

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

S

Określa, że buforowanie jest zoptymalizowane pod kątem dostępu sekwencyjnego do dysku, ale nie ogranicza się do niego.

R

Określa, że buforowanie jest zoptymalizowane pod kątem dostępu losowego do dysku, ale nie ogranicza się do niego.

T

Określa plik jako tymczasowy.Jeśli to możliwe, nie jest on opróżniany do dysku.

D

Określa plik jako tymczasowy.Jest on usuwany po zamknięciu ostatniego wskaźnika do pliku.

Jeśli t lub b nie jest podana w mode, tryb translacji jest określona przez zmienną domyślny tryb _fmode.Jeśli argument jest poprzedzony wartością t lub b, funkcja kończy się niepowodzeniem i zwraca wartość NULL.W celu dyskusji na temat trybu tekstowego i binarnego, zobacz Operacja We/Wy pliku w trybie binarnym i tekstowym.

Argument shflag jest wyrażenie stałe, składający się z jednego z następujących stałych manifestu, 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ępu do odczytu do pliku.

_SH_DENYRW

Odmawia odczytu i zapisu do pliku.

_SH_DENYWR

Odmawia dostępu do zapisu do pliku.

Rutynowe mapowania zwykłego tekstu

Procedura Tchar.h

_UNICODE i _MBCS nie zdefiniowany

_MBCS zdefiniowano

_UNICODE zdefiniowany

_tfsopen

_fsopen

_fsopen

_wfsopen

Wymagania

Funkcja

Wymagany nagłówek

Opcjonalne nagłówki

_fsopen

<stdio.h>

<Share.h>

Dla manifestu stałą dla shflag parametru.

_wfsopen

<stdio.h> lub <wchar.h>

<Share.h>

Dla manifestu stałą dla shflag parametru.

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

We/Wy strumienia

fclose, _fcloseall

_fdopen, _wfdopen

ferror

_fileno

fopen, _wfopen

freopen, _wfreopen

_open, _wopen

_setmode

_sopen, _wsopen