next up previous
Next: Funções obrigatórias Up: ep3 Previous: ep3

Leitura e Gravação de um Arquivo

Para fazer a leitura de um arquivo de entrada e a gravação da saída em um arquivo, utilize a seguinte receita no seu programa, dentro da função main():

  /* Declaração das variáveis para leitura e gravação em arquivos */
  char nome_arq_entrada[40]; /* para o nome do arquivo de entrada */
  FILE *entrada, *saida;     

  /* Primeiros comandos do seu programa */
  /* Abertura do arquivo de entrada */
  printf("Digite o nome do arquivo de entrada: ");
  scanf("%s", nome_arq_entrada);
  if ((entrada = fopen(nome_arq_entrada, "r")) == NULL) {
    printf("Arquivo de entrada nao encontrado!\n");
    exit(0);
  }
  /* Abertura do arquivo de saída */ 
  if ((saida = fopen("saida.txt", "w")) == NULL) {
    printf("Erro na abertura do arquivo de saida!\n");
    exit(0);
  }

No restante do seu programa, toda vez que você quiser ler alguma coisa do arquivo de entrada, utilize a função fscanf e para escrever no arquivo de saída, utilize a função fprintf. Estas funções funcionam de forma semelhante ao scanf e ao printf, exceto que elas possuem um parâmetro a mais: o nome do arquivo onde está sendo feita a leitura ou a gravação. (Veja os exemplos abaixo.) Sinta-se a vontade de imprimir tanto no arquivo (com o fprintf) quanto na tela (com o printf): isso pode lhe ajudar na fase de teste do seu programa, por exemplo na verificação de que a leitura do arquivo está funcionando corretamente, etc.

Para fazer a leitura do nome, utilize a função fgets, que tem como parâmetros (nesta ordem) o nome da string onde será guardada a string lida, o número de caracteres a serem lidos (no nosso caso, 30 - lembre-se de utilizar o comando #define MAX_NOME 30 no início do programa) e o nome do arquivo de onde a leitura deve ser feita.


Exemplos:

  /* Leitura do arquivo de entrada */
  fscanf(entrada, "%d %d %d ", &n, &p, &m);

  /* Verificação os valores que foram lidos - impressão na tela */
  printf("n = %d   p = %d   m = %d\n", n, p, m);

  /* Leitura de um nome do arquivo de entrada */
  fgets(nome, MAX_NOME, entrada); 

  /* Gravação no arquivo de saida */
  fprintf(saida, "%s %4.1f\n", nome, mf);


next up previous
Next: Funções obrigatórias Up: ep3 Previous: ep3
Cristina Gomes Fernandes
2003-05-22