_Write
_write
Функция Записывает данные в файл.
Синтаксис #include
int _write(int handle, void *buf, unsigned len);
Файл, содержащий io.h прототип
Описание Данная функция делает попытку записи len байт из буфера, адресуемого параметром buf, в файл, соответствующий номеру handle.
Максимальное число байтов, которое _write может записать 65534, т.к. 65535(0xFFFF) тоже самое, что и -1, что является возвращаемым кодом ошибки для _write.
_write не преобразует символ перевода строки (LF), в пару CR/LF, поскольку все файлы рассмат- ривает как двоичные.
Если число действительно записанных байтов мень- ше, чем задано, то должна быть выдана ошибка и возможно это говорит, что на диске нет места.
Для дисков и дисковых файлов, запись всегда осу- ществляется с текущего файлового указателя. Для устройств, байты посылаются непосредственно на устройства.
Для файлов открытых опцией O_APPEND, файловый указатель не устанавливается на EOF функцией _write, прежде чем будет осуществлена запись дан- ных.
Возвращаемое _write возвращает число записанных байтов.В случае значение ошибки _write возвращает -1, и устанавливает гло- бальную переменную errno в:
EACCED - Permission denied; EBADR - Bad file number.
Переносимость _write уникальна для DOS.
Смотрите также Пример:
#include
#include
#include
#include
#include
#include
int main(void) { void *buf; int handle, bytes; buf = malloc(200); /* Создать в текущей директории файл TEST.$$$ и записать в него 200 байт. Если такой файл уже существует, то он будет перезаписан */ if((handle = open("TEST.$$$",O_CREAT|O_WRONLY|O_BINARY, S_IWRITE|S_IREAD)) == -1) { printf("Ошибка при открытии файла\n"); exit(1); } if((butes = _write(handle, buf, 200)) == -1) { printf("Ошибка при записи.\n"); exit(1); } printf("Записано %d байт",bytes); close(handle); /* прим. пер. в оригинале close отсутсвует */ return 0; }