_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