Função read
Sintaxe:
ssize_t read (int iFileDescriptor, void * buffer, size_t nbyte);
A função read realiza a leitura de dados do arquivo para a memória. Deve-se informar de qual descritor devem ser lidos os bytes. O descritor deve estar aberto com opção O_RDONLY ou O_RDWR. Os dados serão lidos a partir da posição corrente.
Deve-se informar o endereço onde a informação lida será armazenada. Também se informa para a função a quantidade de bytes que devem ser lidos do arquivo. É responsabilidade do programador reservar o espaço necessário para que a função não invada memória.
A função irá retornar a quantidade de bytes realmente lidos do arquivo. Caso ocorra algum erro na leitura do arquivo a função irá retornar -1 indicando erro. A descrição do erro estará disponível na variável errno.
Veja o exemplo:
#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <limits.h> #include <fcntl.h> int main(int argc, char *argv[]) { int iFileDescriptor; /* A constante _POSIX_PATH_MAX] indica o tamanho (de caracteres incluindo diretórios e subdiretórios) que um arquivo pode possuir. Esta definido no arquivo limits.h */ char sNome [_POSIX_PATH_MAX]; ssize_t iQtdeLida; char aBuffer[100]; printf ("Entre com o nome do arquivo : "); gets (sNome); iFileDescriptor = open (sNome, O_RDONLY); if (iFileDescriptor < 0) { perror (argv[0]); exit (errno); } printf ("Arquivo '%s' aberto\n", sNome); printf("\nTentando ler 100 bytes do arquivo indicado\n"); /* deve-se passar sempre o endereço de memória da variável que vai receber os bytes lidos */ iQtdeLida = read (iFileDescriptor, &aBuffer, 100); if (iQtdeLida < 0) { perror (argv[0]); exit (errno); } printf("\nForam lidos %d bytes do arquivo '%s'\n", iQtdeLida, sNome); close (iFileDescriptor); return 0; }
— Marcos Laureano 2008/04/25 06:47