_write
Записывает в него данные.
int _write(
int fd,
const void *buffer,
unsigned int count
);
Параметры
fd
Идентификатор файла, в который записываются данные.buffer
Данные для записи.count
Число байтов.
Возвращаемое значение
В случае успешного выполнения; _write возвращает число фактически записанных байтов.Если фактическая оставшегося места на диске, чем размер буфера функция пытается записать на диск _write завершается ошибкой и не топят содержимое любого буфера на диск.Возвращаемое значение - 1 указывает на ошибку.Если переданы недопустимые параметры, то функция вызывает обработчик недопустимого параметра, как описано в разделе Проверка параметров.Если выполнение может быть продолжено, то функция возвращает значение -1, errno набор одно из 3 значений: EBADFидентификатор файла, то есть является недопустимым или файл не открыт для записи; ENOSPC, который означает, что не является достаточно места влево на устройство для операции; OR EINVALозначает то, поэтому она buffer был указатель null.
См. _doserrno, errno, _sys_errlist и _sys_nerr дополнительные сведения об этих и других, кодов возврата.
Если файл открыт в режиме текст, то каждый символ перевода строки заменяется возврата каретки - ключом перевода строки в вывод.Замена не влияет на возвращаемое значение.
Заметки
_write записи функции count байты из buffer в файл, связанный с fd.Начинает операцию записи в текущей позиции указателя файла (если таковые имеются), связанного с данным файлом.Если файл открыт для добавления, то операция начинается в текущем конце файла.После операции записи, то указатель файла увеличивается на число фактически записанных байтов.
При записи к файлам, открытый в режиме текста _write обрабатывает символ CTRL+Z, как логический конец файла.При записи на устройство, _write обрабатывает символ CTRL+Z в буфере как признак вывода.
Требования
Процедура |
Обязательный заголовок |
---|---|
_write |
<io.h> |
Дополнительные сведения о совместимости см. Совместимость во введении.
Пример
// crt__write.c
//
// This program opens a file for output and uses _write to write
// some bytes to the file.
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <share.h>
char buffer[] = "This is a test of '_write' function";
int main( void )
{
int fileHandle = 0;
unsigned bytesWritten = 0;
if ( _sopen_s(&fileHandle, "write.o", _O_RDWR | _O_CREAT,
_SH_DENYNO, _S_IREAD | _S_IWRITE) )
return -1;
if (( bytesWritten = _write( fileHandle, buffer, sizeof( buffer ))) == -1 )
{
switch(errno)
{
case EBADF:
perror("Bad file descriptor!");
break;
case ENOSPC:
perror("No space left on device!");
break;
case EINVAL:
perror("Invalid parameter: buffer was NULL!");
break;
default:
// An unrelated error occured
perror("Unexpected error!");
}
}
else
{
printf_s( "Wrote %u bytes to file.\n", bytesWritten );
}
_close( fileHandle );
}