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.
Por: Kleber de Andrade Reis
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!
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:
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.
Exemplo: Abrindo e fechando um arquivo
A condição !fp testa se o arquivo foi aberto com sucesso, porque no caso dê um erro, a função fopen() retorna um ponteiro nulo (NULL).
Lendo e escrevendo caracteres em arquivo
putc
Escreve um caractere no arquivo.
Protótipo: int putc (int ch,FILE *fp);
* Parâmetro 1: "int ch" - caracter a ser escrito no arquivo (pode ser uma variável).
* Parâmetro 2: "FILE *fp" - o arquivo a ser escrito.
getc
Retorna um caractere lido do arquivo.
Protótipo: int getc (FILE *fp);
* Parâmetro: "FILE *fp" - o arquivo a ser lido.
feof
EOF ("End of file") - indica o fim de um arquivo. Às vezes é necessário verificar se um arquivo chegou ao fim, para isto podemos usar a função feof(). Ela retorna não-zero se o arquivo chegou ao EOF, caso contrário retorna zero.
Protótipo: int feof (FILE *fp);
Parâmetro: "FILE *fp" - o arquivo a ser verificado.
Exemplo: Lendo e escrevendo caracteres em arquivo
Conclusão
Essa foi a primeira parte do artigo de manipulação de arquivo em C, com ele vimos algumas funções básicas e exemplos de como usá-las.
Na próxima parte falaremos de mais algumas funções e no final um exemplo prático do uso dessas funções.
Espero que tenham gostado e em breve postarei a parte II desse artigo.
Fonte: vivaoLinux
Postado Por: RedDeviL
Por: Kleber de Andrade Reis
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!
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:
Código:
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.
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.
Exemplo: Abrindo e fechando um arquivo
Código:
/* Abrindo e fechando um arquivo */ #include <stdio.h> main() { char *str1 = "/mnt/wind/teste/dbase/dbase"; FILE *fp; /* Declaração da estrutura */ fp=fopen (str1,"wb"); /* o arquivo se chama dbase está localizado no diretório /mnt/wind/teste/dbase */ if (!fp) printf ("Erro na abertura do arquivo."); else printf("Arquivo aberto com sucesso."); fclose(fp); }
Lendo e escrevendo caracteres em arquivo
putc
Escreve um caractere no arquivo.
Protótipo: int putc (int ch,FILE *fp);
* Parâmetro 1: "int ch" - caracter a ser escrito no arquivo (pode ser uma variável).
* Parâmetro 2: "FILE *fp" - o arquivo a ser escrito.
getc
Retorna um caractere lido do arquivo.
Protótipo: int getc (FILE *fp);
* Parâmetro: "FILE *fp" - o arquivo a ser lido.
feof
EOF ("End of file") - indica o fim de um arquivo. Às vezes é necessário verificar se um arquivo chegou ao fim, para isto podemos usar a função feof(). Ela retorna não-zero se o arquivo chegou ao EOF, caso contrário retorna zero.
Protótipo: int feof (FILE *fp);
Parâmetro: "FILE *fp" - o arquivo a ser verificado.
Exemplo: Lendo e escrevendo caracteres em arquivo
Código:
/* Lendo e escrevendo caracteres em arquivo */ #include <stdio.h> #include <stdlib.h> #include <string.h> void main() { FILE *p; char c, str[40] = "/mnt/wind/teste/facu/teste.txt", frase[80] = "Este e um arquivo chamado: "; int i; /* Lê um nome para o arquivo a ser aberto: */ if (!(p = fopen(str,"w"))) /* Caso ocorra algum erro na abertura do arquivo..*/ { /* o programa aborta automaticamente */ printf("Erro! Impossível abrir o arquivo!\n"); exit(1); } /* Se não houve erro, imprime no arquivo e o fecha ...*/ strcat(frase, str); for (i=0; frase[i]; i++) putc(frase[i],p); fclose(p); /* Abre novamente para leitura */ p = fopen(str,"r"); c = getc(p); /* Lê o primeiro caracter */ while (!feof(p)) /* Enquanto não se chegar no final do arquivo */ { printf("%c",c); /* Imprime o caracter na tela */ c = getc(p); /* Lê um novo caracter no arquivo */ } printf("\n\n"); fclose(p); /* Fecha o arquivo */ }
Essa foi a primeira parte do artigo de manipulação de arquivo em C, com ele vimos algumas funções básicas e exemplos de como usá-las.
Na próxima parte falaremos de mais algumas funções e no final um exemplo prático do uso dessas funções.
Espero que tenham gostado e em breve postarei a parte II desse artigo.
Fonte: vivaoLinux
Postado Por: RedDeviL