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


_creat, _wcreat

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

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

Параметры

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

  • pmode
    Параметры разрешений

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

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

Значение errno

Описание

EACCES

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

EMFILE

Больше нет доступных дескрипторов файла.

ENOENT

Не удалось найти указанный файл.

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

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

Заметки

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

Универсальное текстовое сопоставление функций

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

_UNICODE и _MBCS не определены

_MBCS определено

_UNICODE определено

_tcreat

_creat

_creat

_wcreat

Если файл, указанный filename, не существует, то будет создан новый открытый для записи файл с заданными настройками разрешений. Если файл уже существует и его настройки разрешений позволяют запись, _creat обрезает файл до длины 0, уничтожая предыдущее содержимое, и открывает его для записи. Настройки разрешений, pmode, применяются только к вновь созданным файлам. Новый файл получает определенные настройки разрешений после его закрытия в первый раз. pmode это целочисленное выражение, которое содержит одну или обе константы манифестов _S_IWRITE и _S_IREAD, определенных в SYS\Stat.h. Если предоставлены обе константы, они объединяются битовым оператором OR ( |). В этом случае параметр 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 );
   }
}
  

См. также

Ссылки

Низкоуровневый ввод-вывод

_chmod, _wchmod

_chsize

_close

_dup, _dup2

_open, _wopen

_sopen, _wsopen

_umask