Функция
Считывает данные из файла.
Синтаксис
#include<io.h>
int read(int handle, void *buf, unsigned len);
Прототип
io.h
Описание
Функция read делает попытку считать len байт из файла, связанного с handle, в буфер, адресуемый параметром buf.
В файле, открытом в текстовом режиме, функция read удаляет символы "возврат каретки" и выдает "конец файла" (EOF), при достижении символа Ctrl-Z.
Параметр handle - это тот же самый параметр, что получают на выходе функций creat, open, dup, dup2.
Функция начинает чтение дисковых файлов с текущего положения указателя файла. Когда чтение завершено, данная функция увеличивает указатель файла на число считанных байт. При работе функции с устройствами, байты данных считываются непосредственно с устройства.
Максимально read может ввести 65534 байта, т.к. 65535 это -1, индикатор ошибки.
Возвращаемое значение
При успешном завершении возвращается положительное целое число, являющееся числом байт, помещенных в буфер; причем, если файл открывается в текстовом режиме, функция read не включает символы "возврата каретки" и символы Ctrl-z в число считанных байтов.
По концу файла (EOF), функция возвращает нуль. При ошибке функция возвращает значение -1, и глобальной переменной errno присваивается одно из следующих значений:
EACCES - Отказ доступа.
EBADF - Неверный номер файла.
Переносимость
Функция read поддерживается на системах UNIX.
Пример
#include<stdio.h>
#include<io.h>
#include<alloc.h>
#include<fcntl.h>
#include<process.h>
#include<sys\stat.h>
int main(buffer)
{
void *buf;
int handle, bytes;
buf = malloc(10);
if((handle = open("TEST.$$$",O_RDONLY|O_BINARY)) == -1)
{
printf("Ошибка при открытии файла.\n");
exit(1);
}
if((bytes = read(handle,buf,10)) == -1)
{
printf("Ошибка чтения.\n");
exit(1);
}
printf("Считано %d байт.\n",bytes);
return 0;
}