Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Создает новый файл. _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