Você está na página 1de 6

Acesso a Arquivos em C

Abertura e Fechamento de Arquivos

Antes de acessar os dados dentro de um arquivo necessrio abri-lo.


Ao terminar de realizar as operaes no arquivo, devemos fech-lo.
As operaes de abertura e fechamento garantem a integridade dos dados.

As funes referentes a arquivos requerem a incluso do stdio.h, e todo


arquivo aberto referenciado por um ponteiro para o tipo FILE.
Acesso a Arquivos em C
Abertura e Fechamento de Arquivos
FILE * fopen(char *nome, char *modo);

Abre o arquivo nome com o modo dado. O nome deve ser uma
string, que pode incluir um caminho completo. O separador de
diretrios depende do sistema. No Windows, "C:\\temp\\arquivo" um
nome vlido. No Linux, "/bin/ls" um nome vlido.

O modo uma string que indica se o arquivo ser aberto para leitura,
escrita, ambos, ou variaes.

Modo "r" apenas leitura


Modo "w" apenas escrita, truncando o arquivo
Modo "a" apenas escrita, mantem os dados originais e posiciona
cursor ao final do arquivo.
Modo "r+" leitura e escrita, mantendo os dados originais.

Modo "w+" leitura e escrita, truncando o arquivo.


Acesso a Arquivos em C
Abertura e Fechamento de Arquivos
FILE * fopen(char *nome, char *modo);

Se a abertura falhar, fopen retora NULL.

int fclose(FILE *f);

Fecha um arquivo aberto. Retorna 0 em caso de sucesso, outro valor em caso


de erro (como tentar fechar um arquivo que no est aberto).
Acesso a Arquivos em C
Leitura de Dados
C prov funes para ler caracteres, linhas de texto, padres formatados ou
vetores de bytes:

int fgetc(FILE *f)


l um byte, retorna seu valor (0-255) como inteiro. Retorna EOF em caso de
erro.
char *fgets(char *dest, int limite, FILE *f);
l uma linha de texto (ou at atingir o limite de bytes lidos) e guarda o texto
lido em dest. Retorna dest em caso de sucesso, NULL em caso de erro.
int fscanf(FILE *f, char *formato, ...);
scanf para arquivos.
int fread(void *dados, int tam_elem, int num_elem, FILE *f);
l num_elem elementos de tam_elem bytes cada e armazena em dados.
Retorna o nmero de elementos lidos com sucesso.
Acesso a Arquivos em C
Escrita de Dados
C prov funes para escrever caracteres, strings, padres formatados ou
vetores de bytes:

int fputc(int c, FILE *f)


Escreve o byte c. Retorna EOF em caso de erro.
int fputs(char *dest, FILE *f);
Escreve a string dest (que deve ter o zero terminador) no arquivo. Retorna EOF em caso
de erro.
int fprintf(FILE *f, char *formato, ...);
printf para arquivos.
int fwrite(void *dados, int tam_elem, int num_elem, FILE *f);
Escreve num_elem elementos de tam_elem bytes cada, armazenados em dados.
Retorna o nmero de elementos escritos com sucesso.
Acesso a Arquivos em C
Posicionamento do Cursor
Em todo arquivo aberto h um "cursor" indicando a posio onde ocorrer
a prxima leitura e/ou escrita. Todas as operaes de leitura e escrita
avanam o cursor aps ler/escrever os dados. Para mover o cursor, ou
obter sua posio atual, temos:

int fseek(FILE *f, long distancia, int origem);


Move o cursor do arquivo f para a posio distancia relativa a alguma origem. A origem
deve ser uma destas 3 constantes:
SEEK_SET incio do arquivo
SEEK_CUR posio atual
SEEK_END fim do arquivo
fseek retorna 0 em caso de sucesso, -1 em caso de erro.

long ftell(FILE *f);


Retorna a posio atual do cursor no arquivo f.