read() Read Data from File
#include <io.h> Required for declarations only
int read(handle,buffer,count);
int handle; Handle referring to open file
char *buffer; Data storage location
unsigned int count; Maximum number of bytes to read
read() reads 'count' bytes from the file associated with 'handle'.
The bytes are stored in 'buffer'. Reading starts at the current
position of the file pointer. After the read, the file pointer
points to the next unread character.
Returns: The number of bytes actually read, if successful; or zero
if an attempt is made to read at end of file; or -1 if an
error occurs. On error, 'errno' is set to
EBADF: 'handle' is invalid; or file is not open
for reading (or file is locked, for MS-DOS
3.0 and later).
Notes: If you are reading more than 32K (the maximum size for
type 'int') from a file, the return value should be of
type 'unsigned int'. The maximum number of bytes that
can be read is 65534. (65535, or FFFFh, is
indistinguishable from -1, and will return an error.)
Under MS-DOS, when the end-of-file marker is encountered
in text mode (Ctrl-Z), the read terminates, and
subsequent reads return 0. The file must be closed to
clear the end-of-file indicator.
The read function may return fewer than count bytes, if
there are less than count bytes from the file pointer to
the end of the file, or if the file was opened in text
mode. (In text mode, each CR-LF is counted as the single
LF character it is translated to. This translation does
not affect the file pointer.)
-------------------------------- Example ---------------------------------
This example reads 100 bytes from an open file and prints out various
messages depending on the results.
#include <io.h>
#include <stdio.h>
#include <fcntl.h>
char buffr[1000];
main()
{
int fhndl, ttlbytes;
if ((fhndl = open("info.dat",O_RDWR)) == -1) {
perror("error opening input file");
exit(1);
}
if ((ttlbytes = read(fhndl,buffr,100)) == -1)
perror("can't read from file");
else {
if (ttlbytes == 0)
printf("reached end of file");
else
printf("read %d bytes from file",ttlbytes);
}
}
Seealso:
This page last updated on Fri Nov 30 10:48:32 MSK 2001
Copyright © 1992-2001, Vitaly Filatov, Moscow, Russia
Webmaster