Manipulando arquivos em C (parte 1)
Esta é a primeira das duas partes que compõem um tutorial que trata a manipulação de arquivos em C. Aqui veremos o funcionamento de funções como: fopen, fclose, feof, fgetc e fputc.
Introdução
Existem muitas funções para a manipulação de arquivos em C.
Dividi esse artigo em duas partes para tentar passar com
detalhes e exemplificar o uso dessas funções.
Então vamos à elas!
O sistema de entrada e saída do ANSI C é composto por uma série de funções cujos protótipos estão reunidos em stdio.h. Todas estas funções trabalham com o conceito de "ponteiro de arquivo". Este não é um tipo propriamente dito, mas uma definição usando o comando typedef. Esta definição também está no arquivo stdio.h. Podemos declarar um ponteiro de arquivo da seguinte maneira:
FILE *p;
"p" será então um ponteiro para um arquivo. É usando este tipo de ponteiro que vamos poder manipular arquivos no C.
Abrindo um arquivo:
fopen
Protótipo: FILE *fopen (char *nome_do_arquivo,char *modo);
Fechando um arquivo:
fclose
Protótipo: int fclose (FILE *fp);
Então vamos à elas!
Abrindo e fechando um arquivo
O sistema de entrada e saída do ANSI C é composto por uma série de funções cujos protótipos estão reunidos em stdio.h. Todas estas funções trabalham com o conceito de "ponteiro de arquivo". Este não é um tipo propriamente dito, mas uma definição usando o comando typedef. Esta definição também está no arquivo stdio.h. Podemos declarar um ponteiro de arquivo da seguinte maneira:
FILE *p;
"p" será então um ponteiro para um arquivo. É usando este tipo de ponteiro que vamos poder manipular arquivos no C.
Abrindo um arquivo:
fopen
Protótipo: FILE *fopen (char *nome_do_arquivo,char *modo);
- O primeiro parâmetro "nome_do_arquivo": é o local onde o arquivo se encontra ou se for criado, onde o arquivo deve ser armazenado.
- O segundo parâmetro "*modo": especifica como o arquivo deve ser aberto. Abaixo uma tabela mostrando os modos possíveis:
| r | Abre um arquivo texto para leitura. O arquivo deve existir antes de ser aberto. |
| w | Abrir um arquivo texto para gravação. Se o arquivo não existir, ele será criado. Se já existir, o conteúdo anterior será destruído. |
| a | Abrir um arquivo texto para gravação. Os dados serão adicionados no fim do arquivo ("append"), se ele já existir, ou um novo arquivo será criado, no caso de arquivo não existente anteriormente. |
| rb | Abre um arquivo binário para leitura. Igual ao modo "r" anterior, só que o arquivo é binário. |
| wb | Cria um arquivo binário para escrita, como no modo "w" anterior, só que o arquivo é binário. |
| ab | Acrescenta dados binários no fim do arquivo, como no modo "a" anterior, só que o arquivo é binário. |
| r+ | Abre um arquivo texto para leitura e gravação. O arquivo deve existir e pode ser modificado. |
| w+ | Cria um arquivo texto para leitura e gravação. Se o arquivo existir, o conteúdo anterior será destruído. Se não existir, será criado. |
| a+ | Abre um arquivo texto para gravação e leitura. Os dados serão adicionados no fim do arquivo se ele já existir, ou um novo arquivo será criado, no caso de arquivo não existente anteriormente. |
| r+b | Abre um arquivo binário para leitura e escrita. O mesmo que "r+" acima, só que o arquivo é binário. |
| w+b | Cria um arquivo binário para leitura e escrita. O mesmo que "w+" acima, só que o arquivo é binário. |
| a+b | Acrescenta dados ou cria uma arquivo binário para leitura e escrita. O mesmo que "a+" acima, só que o arquivo é binário. |
Fechando um arquivo:
fclose
Protótipo: int fclose (FILE *fp);
- O ponteiro fp passado à função fclose() determina o arquivo a ser fechado. A função retorna zero no caso de sucesso.