/********************************************************** 
PROGRAMA aula1a.c 
Exemplo de programa que copia um arquivo-texto,de nome exemplo1.txt 
(existente no diretorio corrente), para outro arquivo exemplo2.txt (a ser 
criado no diretorio corrente). 
A leitura e gravacao sao feitas caractere a caractere. 
Neste exemplo, o fim de arquivo e' testado usando a funcao feof(). 
Leia observacoes no final 
***********************************************************/ 

#include <stdio.h> 
int main() { 
   FILE *in, *out; 
   int c; 
   if ((in = fopen("exemplo1.txt", "rt")) == NULL){ 
      printf("Nao consegue abrir o arquivo de entrada.\n"); 
      return 1; 
   } 
   if ((out = fopen("exemplo2.txt", "wt")) == NULL) { 
      printf("Nao consegue abrir o arquivo de saida.\n"); 
      return 1; 
   } 
    c = fgetc(in); 
   while (!feof(in)) { 
    fputc(c, out); 
    c = fgetc(in); 
   } 
   fclose(in); 
   fclose(out); 
   return 0; 
}

/********************************************************************** 
 OBSERVACOES: 
 1. Os dois primeiros testes sao recomendados sempre que se for tentar 
    ler ou  gravar arquivos. A funcao fopen() retorna NULL se ocorre algum 
    erro ao tentar abrir o arquivo. 
 2. E' boa pratica retornar 1 em caso de erro, e 0 em caso de sucesso, na 
    funcao main (). 
 3. A funcao fgetc tem a seguinte definicao: 
      int fgetc(FILE *fp); 
    Ela le o proximo caractere do arquivo apontado por fp e retorna 
    esse caractere. Em caso de encontrar o fim do arquivo, ou erro de 
    leitura, retorna EOF (definido como inteiro -1. E' por isso que a 
    funcao retorna um inteiro, e nao um char). 
 4. A funcao fputc tem a seguinte definicao: 
      int fputc(int c, FILE *fp); 
    Ela grava o caractere c na proxima posicao do arquivo apontado por fp. 
    Retorna o caractere c, ou EOF (inteiro -1), no caso de erro de gravacao. 
 5. A funcao  int feof(FILE *fp)  retorna um valor diferente de zero (verdade) 
    se o fim de arquivo foi encontrado (isto e', se a posicao atual e'o fim de 
    arquivo). Caso contrario, retorna zero (falso). 
 6. E' boa pratica fechar os arquivos usados com a funcao fclose(). 
    De qualquer forma eles serao fechados com o termino do programa. 
FIM DO PROGRAMA aula1a.c 
*************************************************************************/ 
