Поделиться через


_creat, _wcreat

Создает новый файл. _creatи _wcreat не рекомендуется; используйте _wsopen_s_sopen_s вместо этого.

Синтаксис

int _creat(
   const char *filename,
   int pmode
);
int _wcreat(
   const wchar_t *filename,
   int pmode
);

Параметры

filename
Имя нового файла.

pmode
Настройка разрешений.

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

Эти функции при успешном завершении возвращают дескриптор созданного файла. В противном случае функции возвращают -1 и задаются errno , как показано в следующей таблице.

Значение errno Description
EACCES Параметр filename определяет существующий файл, доступный только для чтения, или указывает каталог вместо файла.
EMFILE Больше нет доступных дескрипторов файлов.
ENOENT Не удалось найти указанный файл.

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

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

Замечания

Функция _creat создает новый файл или открывает и обрезает существующий. _wcreat — это версия _creatс расширенными символами; аргумент filename для _wcreat — строка расширенных символов. Поведение_wcreat и _creat идентично в противном случае.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить его, ознакомьтесь с глобальным состоянием в CRT.

Сопоставления подпрограмм универсального текста

Подпрограмма Tchar.h _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcreat _creat _creat _wcreat

Если файл, указанный filename не существует, создается новый файл с заданным параметром разрешения и открывается для записи. Если файл уже существует и его настройки разрешений допускают запись, функция _creat обрезает файл до длины 0, уничтожая предыдущее содержимое, и открывает его для записи. Настройка разрешений, pmode, применяется только к вновь созданным файлам. Новый файл получает указанный параметр разрешения после первого закрытия. Целочисленное выражение pmode содержит одну или обе константы манифеста _S_IWRITE и _S_IREAD, определенные в SYS\Stat.h. При указании обеих констант они объединяются с побитовой или оператором ( | ). Параметр pmode имеет одно из следующих значений.

Значение Определение
_S_IWRITE Разрешена запись.
_S_IREAD Разрешено чтение.
_S_IREAD | _S_IWRITE Разрешены чтение и запись.

Если разрешение на запись не задано, файл доступен только для чтения. Все файлы всегда доступны для чтения; Невозможно предоставить разрешение только для записи. Поэтому режимы _S_IWRITE и _S_IREAD | _S_IWRITE эквивалентны. Файлы, открытые с помощью _creat , всегда открываются в режиме совместимости (см _sopen. ) с _SH_DENYNO.

_creat Применяет текущую маску pmode разрешений на файл перед настройкой разрешений (см. раздел _umask). Функция _creat предоставлена в основном для обеспечения совместимости с предыдущими библиотеками. Вызов функции _open со значениями _O_CREAT и _O_TRUNC в параметре oflag эквивалентен вызову функции _creat и предпочтителен для нового кода.

Требования

Маршрут Обязательный заголовок Необязательный заголовок
_creat <io.h> <sys/types.h>, <sys/stat.h, <errno.h>>
_wcreat <io.h> или <wchar.h> <sys/types.h>, <sys/stat.h, <errno.h>>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// crt_creat.c
// compile with: /W3
// This program uses _creat to create
// the file (or truncate the existing file)
// named data and open it for writing.

#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
   int fh;

   fh = _creat( "data", _S_IREAD | _S_IWRITE ); // C4996
   // Note: _creat is deprecated; use _sopen_s instead
   if( fh == -1 )
      perror( "Couldn't create data file" );
   else
   {
      printf( "Created data file.\n" );
      _close( fh );
   }
}
Created data file.

См. также

Низкоуровневый ввод-вывод
_chmod, _wchmod
_chsize
_close
_dup, _dup2
_open, _wopen
_sopen, _wsopen
_umask