====== Função read ====== Sintaxe: ''[[ssize_t]] read ([[tipos_dados|int]] iFileDescriptor, [[tipos_dados|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 #include #include #include #include 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.eti.br|Marcos Laureano]] 2008/04/25 06:47//