Curso de C

Lendo e Escrevendo Caracteres em Arquivos


putc

A função putc é a primeira função de escrita de arquivo que veremos. Seu protótipo é:

                int putc (int ch,FILE *fp);

Escreve um caractere no arquivo.

O programa a seguir lê uma string do teclado e escreve-a, caractere por caractere em um arquivo em disco (o arquivo arquivo.txt, que será aberto no diretório corrente).

 

#include <stdio.h>
int main()
{
 FILE *fp;
 char string[100];
 int i;
 fp = fopen("arquivo.txt","w");   /* Arquivo ASCII, para escrita */
 if(!fp)
 {
    printf( "Erro na abertura do arquivo");
    exit(0);
 }
 printf("Entre com a string a ser gravada no arquivo:");
 gets(string);
 for(i=0; string[i]; i++) putc(string[i], fp); /* Grava a string, caractere a caractere */
 fclose(fp);
 return 0;
}

Depois de executar este programa, verifique o conteúdo do arquivo arquivo.txt (você pode usar qualquer editor de textos). Você verá que a string que você digitou está armazenada nele.

getc

Retorna um caractere lido do arquivo. Protótipo:

                int getc (FILE *fp);

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. Seu protótipo é:

                int feof (FILE *fp);

Outra forma de se verificar se o final do arquivo foi atingido é comparar o caractere lido por getc com EOF. O programa a seguir abre um arquivo já existente e o lê, caracter por caracter, até que o final do arquivo seja atingido. Os caracteres lidos são apresentados na tela:

#include <stdio.h>
int main()
{
FILE *fp;
char c;
fp = fopen("arquivo.txt","r");   /* Arquivo ASCII, para leitura */
if(!fp)
{
    printf( "Erro na abertura do arquivo");
    exit(0);
}
while((c = getc(fp) ) != EOF)      /* Enquanto não chegar ao final do arquivo */
    printf("%c", c);                 /* imprime o caracter lido */
fclose(fp);
return 0;
}

 

A seguir é apresentado um programa onde várias operações com arquivos são realizadas, usando as funções vistas nesta página. Primeiro o arquivo é aberto para a escrita, e imprime-se algo nele. Em seguida, o arquivo é fechado e novamente aberto para a leitura. Verifique o exemplo.

#include <stdio.h>
#include <string.h>

void main()
{
	FILE *p;
	char c, str[30], frase[80] = "Este e um arquivo chamado: ";
	int i;
	/* Le um nome para o arquivo a ser aberto: */
	printf("\n\n Entre com um nome para o arquivo:\n");
	gets(str);

	if (!(p = fopen(str,"w")))  /* Caso ocorra algum erro na abertura do arquivo..*/ 
  	{                           /* o programa aborta automaticamente */
  	  printf("Erro! Impossivel abrir o arquivo!\n");
  	  exit(1);
  	}
	/* Se nao 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");
	while (!feof(p))	/* Enquanto não se chegar no final do arquivo */
 	{
  		c = getc(p);	/* Le um caracter no arquivo */
  		printf("%c",c); /*   e o imprime na tela */
  	}
	fclose(p);		/* Fecha o arquivo */
}

Auto-Avaliação

Veja como você está: escreva um programa que abra um arquivo texto e conte o número de caracteres presentes nele. Imprima o número de caracteres na tela.


    P


Curso de C do CPDEE/UFMG - 1996 - 1999