sábado, 16 de outubro de 2010

O número de ocorrências de um determinado carácter num ficheiro

Na aula de ontem, resolvi um exercicio que demorou 1 hora a ser resolvido, mas depois vi que é tão facil.
O exercico é o seguinte:
Escreva um programa que conta, num ficheiro, o número de ocorrências de um determinado carácter. O ficheiro e o carácter são especificados pelo utilizador. Abra o ficheiro em modo de texto para leitura. Utilize a função getc().
Exemplo de saída do programa:
Caminho e nome do ficheiro: c:\autoexec.bat
Caracter: \
Resultado: 6 ocorrências do caracter \
Grave o programa com o nome m7_f1_8.c na sua pasta.

Resolução:
#include <stdio.h>
main()
{
      FILE *fp;
      char palavra;
      char nome_fp[50];
      char caracter[0];
      int i;
      int soma=0;
     
      printf("Introduza o nome do ficheiro:\n");
      scanf("%s",nome_fp);
     
     
      if((fp=fopen(nome_fp, "r"))==NULL)
         printf("Ocorreu um erro ao abrir o ficheiro\n");
     
      else
            printf("O ficheiro foi aberto com sucesso\n");
     
      printf("Caracter: ");
      scanf("%s", caracter);
     
      while((palavra = fgetc(fp))!=EOF){               
      if(palavra==caracter[0])
      soma=soma+1; 
      }
     
     printf("\nresultado: %d correspondencias do caracter %s\n\n", soma, caracter);
     
      fclose(fp);
     
      system("pause");
      return 0;
}
A unica diferença entre este exercício e o exercicio de criar um ficheiro foi :
      printf("Caracter: ");
      scanf("%s", caracter); // serve para pedir um caracter, para depois ver o numero de vezes que ocorre
     
      while((palavra = fgetc(fp))!=EOF){   // serve para verificar quando terminar as palavras no FILE           
      if(palavra==caracter[0]) // verificar caracter a caracter se tem igual
      soma=soma+1;   //contar as ocorrencias
      }
     
     printf("\nresultado: %d correspondencias do caracter %s\n\n", soma, caracter);

Sem comentários:

Enviar um comentário