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