Arquivos de texto: lendo

Para ler um arquivo, abra-o com o modo r. Em geral, não é uma boa idéia usar fscanf para leitura: a menos que o arquivo esteja perfeitamente formatado, fscanf não o manipulará corretamente. Em vez disso, use fgets para ler cada linha e então analisar gramaticalmente as partes necessárias.

O seguinte código demonstra o processo de leitura de um arquivo e o descarregamento de seu conteúdo na tela:

  #include <stdio.h>  

  int main()
  {
      FILE *f;
      char s[1000];
        f=fopen("infile","r");
      if (!f)
          return 1;
      while (fgets(s,1000,f)!=NULL)
          printf("%s",s);
      fclose(f);
      return 0;
  } 

A instrução fgets retorna um valor NULL ao marcador de final de arquivo. Ele lê uma linha (até 1 mil caracteres, neste caso) e depois a imprime para stdout. Observe que a instrução printf não inclui n na string de formatação, pois fgets adiciona n ao final de cada linha que lê. Assim, você pode saber se uma linha não está completa no evento que excede o comprimento máximo da linha especificado no segundo parâmetro para fgets.

Erros que devem ser evitados na linguagem C
  • Não digite acidentalmente close em vez de fclose. A função close existe, portanto o compilador a aceita. Ela até parecerá funcionar se o programa apenas abrir ou fechar alguns arquivos. Entretanto, se o programa abrir e fechar um arquivo em um loop, eventualmente ficará sem manipuladores de arquivos disponíveis e/ou espaço em memória e travará, pois close não está fechando os arquivos corretamente.