_fsopen, _wfsopen

Открывает поток с совместным пользованием файлами.

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

Параметры

  • filename
    Имя файла, который необходимо открыть.

  • mode
    Разрешенный тип доступа.

  • shflag
    Разрешенный тип совместного использования.

Возвращаемое значение

Каждая из этих функций возвращает указатель на поток.Значение нулевого указателя указывает на ошибку.Если filename или modeNULL или пустая строка, то вызывается обработчик эти функции недопустимы параметра, как описано в Проверка параметровразделе.Если выполнение может быть продолжено, то эти функции возвращают NULL и набор errno к EINVAL.

Дополнительные сведения об этих и других кодах ошибок см. в разделе _doserrno, errno, _sys_errlist и _sys_nerr.

Заметки

Функция _fsopen открывает файл, указанный filename как поток и подготавливает файл для последующих общих чтения или записи в соответствии с режимом и аргументами shflag._wfsopen версия расширенных символов _fsopen; аргументы filename и mode к _wfsopen характерные черты._wfsopen и _fsopen поведение идентично в противном случае.

Символьная строка mode определяет запрошенный тип доступа к файлу, как показано в следующей таблице.

Термин

Определение

"r"

Открытые для чтения.Если файл не существует или не может быть найден, то вызов _fsopen завершается ошибкой.

"w"

Открывается пустой файл для записи.Если указанный файл существует, то его содержимое уничтожены.

"a"

Открытые для записи в конце файла (добавить); сначала создается файл, если он не существует.

"r+"

Открытые как для чтения, так и для записи.(Файл должен существовать.)

"w+"

Открывается пустой файл как для чтения, так и для записи.Если указанный файл существует, то его содержимое уничтожены.

"a+"

Открытые для чтения и добавления. сначала создается файл, если он не существует.

Используйте типы "w" и "w+" с осторожностью, так как они могут удалить существующие файлы.

При открытии файла с типом доступа "a" или "a+" все операции записи появляются в конце файла.Указатель файла можно перемещать с использованием fseek или rewind, но он всегда перемещается назад в конец файла, прежде чем любая операция записи унесена.Таким образом, нельзя перезаписать существующие данные.При определенных "r+", "w+"или тип доступа "a+" и чтение и запись разрешены (говорят, что файл открыт для обновления).Однако при переключении между чтением и записью, должно быть промежуточные fsetpos, fseekили операция rewind.Текущая позиция могут быть заданы для операции fsetpos или fseek, если необходимо.Помимо в предыдущем значений, одно следующих символов может быть включено в mode чтобы указать режим преобразования для новых линий, а также для управления файлами.

Термин

Определение

t

Открывает файл в режиме () переведенного текста.В этом режиме сочетания канала очереди возврата экипажа (CR-LF) преобразуются в канале одной линии (LF) на входе и символы преобразуются в CR-LF LF сочетаниям на выходе.Кроме того, CTRL+Z, интерпретируется как символ конца файла на входе.В файлах, открытых на чтение или чтение и запись, _fsopen проверяет CTRL+Z в конце файла и удаляет его, если это возможно.Это делается, потому что помощью fseek и ftell для перемещения внутри файла, заканчивается CTRL+Z может привести к fseek работать неправильно в конце файла.

b

Открывает файл в бинарном режиме (untranslated); приведенные выше переводы подавляются.

S

Указывает, что позволяет оптимизировать для прячущ в кэше, но не выпусками, последовательный доступ с диска.

R

Указывает, что позволяет оптимизировать для прячущ в кэше, но не выпусками, прямой доступ с диска.

T

Определяет файл как временное.Если возможно, он не очищается на диск.

D

Определяет файл как временное.Он удаляется, когда последний указатель файла закрыт.

Если t или b не уступаны mode, то режим преобразования определяется переменной _fmodeзначение по умолчанию-режима.Если t или b предваряются к аргументу, то функция завершится неудачно и возвращает NULL.Описание режимов текст и binary см. в разделе ВВОДА-ВЫВОДА текста и файла режим binary.

Аргумент shflag константное выражение, состоящее из манифестов одно из следующих констант определяется в Share.h.

Термин

Определение

_SH_COMPAT

Устанавливает режим совместимости для 16-разрядных приложений.

_SH_DENYNO

Разрешает доступ на чтение и запись.

_SH_DENYRD

Запрещает доступ на чтение к файлу.

_SH_DENYRW

Запрещает доступ на чтение и запись в файл.

_SH_DENYWR

Запрещает доступ для записи к файлу.

Сопоставления подпрограммы Родов-Текста

Подпрограмма Tchar.h

Не указанные _UNICODE и _MBCS

Указанный символ _MBCS

Указанный _UNICODE

_tfsopen

_fsopen

_fsopen

_wfsopen

Требования

Функция

Обязательный заголовок

Необязательные заголовки

_fsopen

<stdio.h>

<share.h>

Для манифеста константы для параметра shflag.

_wfsopen

<stdio.h> или <wchar.h>

<share.h>

Для манифеста константы для параметра shflag.

Пример

// 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

См. также

Ссылки

Поток ВВОДА-ВЫВОДА

fclose, _fcloseall

_fdopen, _wfdopen

ferror

_fileno

fopen, _wfopen

freopen, _wfreopen

_open, _wopen

_setmode

_sopen, _wsopen