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>
#include <stdlib.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>
#include <stdlib.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 <stdlib.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");
        c = getc(p);		/* Le 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);    /* Le um novo caracter no arquivo */
        }
        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