em uma area de memoria (o "buffer") em vez de serem escritos em discoimediatamente. Quando o "buffer" estiver cheio, seu conteudo e escrito no disco de uma vez. Arazao para se fazer isto tem a ver com a eficiencia nas leituras e gravacoes de arquivos. Se,para cada caracter que fossemos gravar, tivessemos que posicionar a cabeca de gravacao emum ponto especifico do disco, apenas para gravar aquele caracter, as gravacoes seriam muitolentas. Assim estas gravacoes so serao efetuadas quando houver um volume razoavel deinformacoes a serem gravadas ou quando o arquivo for fechado.A funcao exit() fecha todos os arquivos que um programa tiver aberto.Lendo e Escrevendo Caracteres em ArquivosputcA funcao putc e a primeira funcao de escrita de arquivo que veremos. Seu prototipo e:int putc (int ch,FILE *fp);Escreve um caractere no arquivo.O programa a seguir le uma string do teclado e escreve-a, caractere por caractere em umarquivo em disco (o arquivo arquivo.txt, que sera aberto no diretorio 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){78printf( "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 conteudo do arquivo arquivo.txt (vocepode usar qualquer editor de textos). Voce vera que a string que voce digitou esta armazenadanele.getcRetorna um caractere lido do arquivo. Prototipo:int getc (FILE *fp);feofEOF ("End of file") indica o fim de um arquivo. As vezes, e necessario verificar se umarquivo chegou ao fim. Para isto podemos usar a funcao feof(). Ela retorna nao-zero se oarquivo chegou ao EOF, caso contrario retorna zero. Seu prototipo e:int feof (FILE *fp);Outra forma de se verificar se o final do arquivo foi atingido e comparar o caractere lidopor getc com EOF. O programa a seguir abre um arquivo ja existente e o le, caracter porcaracter, ate que o final do arquivo seja atingido. Os caracteres lidos sao 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 nao chegar ao final do arquivo */printf("%c", c); /* imprime o caracter lido */fclose(fp);return 0;}A seguir e apresentado um programa onde varias operacoes com arquivos sao realizadas,usando as funcoes vistas nesta pagina. Primeiro o arquivo e aberto para a escrita, e imprimesealgo nele. Em seguida, o arquivo e fechado e novamente aberto para a leitura. Verifique oexemplo.#include <stdio.h>#include <stdlib.h>79#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 nao se chegar no final do arquivo */{printf("%c",c); /* Imprime o caracter na tela */c = getc(p);