next up previous contents
Next: Acesso seqüencial Up: Manipulação de arquivos Previous: Manipulação de arquivos   Sumário

Arquivos em C

Na linguagem de programação C, a informação sobre um arquivo é acessada através de um descritor cuja estrutura é definida no arquivo de cabeçalho stdio.h. Um programa C que vá manipular arquivos deve então incorporar ao início de seu programa fonte a linha de inclusão desse arquivo de cabeçalho:

   #include <stdio.h>

Esse arquivo de cabeçalho define o nome de tipo FILE associado a essa estrutura. Não é necessário conhecer o formato interno dessa estrutura para manipular arquivos. O programador C, para acessar arquivos, define variáveis ponteiros para este tipo, FILE *, que são manipuladas diretamente pelas funções da biblioteca padrão de entrada e saída. Tais variáveis são usualmente chamadas de manipuladores de arquivo. Assim, a função que vai manipular o arquivo deve incluir a declaração de uma variável desse tipo, como em:

    FILE *arqFonte;

O objetivo de manipular um arquivo é realizar operações de leitura e escrita sobre seu conteúdo. Para que essas operações de transferência de dados tenham sucesso, é preciso que haja a permissão adequada para a operação. Por exemplo, um teclado seria um dispositivo que não aceita saída de dados (escrita), mas apenas entrada (leitura).

Para abrir um arquivo em C, a rotina fopen é invocada recebendo dois parâmetros. O primeiro é uma string com o nome do arquivo que será aberto. O segundo parâmetro é outra string que especifica o modo de acesso, que pode conter os caracteres r (leitura), w (escrita), a (escrita ao final -- append), e b (acesso em modo binário). O valor de retorno é o manipulador alocado para o arquivo aberto.

Por exemplo, para realizar a leitura do conteúdo de um arquivo chamado teste.asm, a seguinte expressão poderia ser usada no programa:

    arqFonte = fopen("teste.asm", "r");

Caso o arquivo não possa ser aberto, a função fopen retorna o ponteiro nulo. Assim, para verificar de o arquivo foi aberto sem problemas, é necessário testar o valor de retorno:

    if (arqFonte != 0) {
        /*  tudo bem */
    }
    else {
        /* erro */
    }

Encerradas as operações sobre um arquivo, ele deve ser fechado. Isso permite que o sistema operacional libere o espaço ocupado pelas informações sobre o arquivo para que esse mesmo espaço possa ser reocupado para a manipulação de outros arquivos. Esta liberação é importante, uma vez que sistemas operacionais tipicamente limitam a quantidade de arquivos que podem ser abertos simultaneamente devido a restrições de espaço alocado para essas estruturas auxiliares.

Para fechar um arquivo previamente aberto, a rotina fclose pode ser usada. Ela recebe como argumento o manipulador do arquivo e não retorna nenhum valor. Assim, após encerrada a operação com o arquivo a expressão fclose(arqFonte); fecha-o.


next up previous contents
Next: Acesso seqüencial Up: Manipulação de arquivos Previous: Manipulação de arquivos   Sumário
Ivan L. M. Ricarte 2003-02-14