/********************************************************** 
Programa aula1b.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 macro EOF. 
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; 
   } 
   ; 
   while ((c= fgetc(in)) != EOF) 
     fputc(c,out); 

   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 (EOF e' uma macro definida 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); 
    (por razoes historicas o parametro c e' int, mas a funcao converte c para char) 
    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. 
 FIM DO PROGRAMA aula1b.c 
****************************************************************/ 
