Описание функций C (Си) / C++ - read

Описание функций C (Си) / C++ - read


#include требуется только для объявления
функции

int read(handle, buffer,count)
int handle; handle-р, ссылающийся на откры-
тый файла
char *buffer; память для хранения данных
unsigned int count; максимальное количество байтов

Описание.

Функция read позволяет читать байты count из файла, связан-
ного с handle, в буфер buffer. Операции чтения начинаются с теку-
щей позиции указателя на файл, который соответствует данному фай-
лу. После выполнения операции чтения этот указатель устанавлива-
ется на следующий непрочитанный символ.

Возвращаемое значение.

Функция read возвращает число действительно прочитанных
байтов, которое может быть меньше, чем count. Возвращаемое значе-
ние 0 указывает на попытку чтения конца файла, а 1 - свидетельст-
вует об ошибке; в этих случаях errno устанавливается в значение,
которое описано ниже.

Величина Смысловое значение

EBADF заданный handle неверный, или файл не яв-
ляется открытым для чтения, или же файл
заблокирован (закрыт). (Версия MS DOS 3.0
и последующие).

Если прочитано больше 32К (максимальный размер типа int) из
файла, возвращаемое значение будет типа unsigned int (см.пример,
приведенный ниже). Однако максимальное число байтов, которое мож-
но прочитать из файла, равно 65534; поскольку 65534 (или OXFFFF)
является неотличимым от -1, поэтому будет возвращена ошибка. Если
файл открыт в текстовом режиме, возвращаемое значение может не
соответствовать числу действительно прочитанных байтов. Если тек-
стовый режим эффективен, каждая пара "ВК-ПС" заменяется символом
ПС. Подсчитывается в возвращаемом значении только отдельный сим-
вол ПС. Эта замена не влияет на указатель файла.
См.также creat, fread, open, write.

Замечание: В MS DOS, когда файл открыт в текстовом режиме,
символ трактуется как индикатор конца файла. Если встречается
CONTROLL-Z, чтение оканчивается и при следующем чтении возвраща-
ется 0 байтов. Индикатор конца файла может воспрепятствовать
очистке файла.

Пример:

#include
#include
#include


char buffer [60000]

main ()
{
int fh;
unsigned int nbytes=60000, bytesread;

if ((fn=open("c:/data/conf.dat",O_RDONLY))==-1) {
perror("open failed on input file");
exit (1);
}
if ((bytesread=read(fh,buffer,nbytes))==-1)
perror("");
else
printf("Read %u bytes from filen",bytesread);
.
.
.
}






Опубликовал admin
11 Мар, Вторник 2008г.



Novoline
novoline
cool-air.org
Программирование для чайников.