Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/06/2012, 21:16
ElPatoGarrido
 
Fecha de Ingreso: noviembre-2011
Mensajes: 50
Antigüedad: 12 años, 4 meses
Puntos: 3
Respuesta: Buscar palabras en un fichero.

tomando en cuenta el coment de arriba aqui dejo el codigo recorregido.

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.     FILE *archivo;
  8.  
  9.     int opc = 1;
  10.     int contador = 0, encontrado = 0;
  11.     char cadena[256], buscar[100], nombre[25];
  12.     char *a;
  13.    
  14.     printf("\n ******************************************************************************\n\n");
  15.     printf(" **********  BIENVENIDO AL PROGRAMA DE BUSQUEDA DE PALABRAS/FRASES  ***********\n");
  16.     printf("\n ******************************************************************************\n");
  17.     printf("\n\n     Ingrese el nombre o ubicacion del archivo, incluyendo punto y formato:\n\n\t\t\t\t");
  18.     fflush(stdin);
  19.     scanf("%[^\n]", nombre);
  20.    
  21.     archivo = fopen(nombre,"r");
  22.    
  23.     if (archivo != NULL)
  24.     {      
  25.         while (opc == 1)
  26.         {
  27.             printf("\n     Ingrese la palabra/frase que desea buscar en el archivo %s:\n\n\t\t\t\t", nombre);
  28.             fflush(stdin);
  29.             scanf("%[^\n]", buscar);
  30.            
  31.             rewind(archivo);
  32.  
  33.             contador = 0;
  34.            
  35.             encontrado = 0;
  36.  
  37.             while (!feof(archivo))
  38.             {
  39.                 contador++;
  40.                
  41.                 fgets(cadena,256,archivo);
  42.                
  43.                 a = strtok(cadena,",.- ");
  44.                
  45.                 while (a != NULL)
  46.                 {
  47.                     if (!strcmp(buscar, a))
  48.                     {
  49.                         encontrado++;
  50.                        
  51.                         if (encontrado == 1)
  52.                         printf("\n     COINCIDENCIAS\n");
  53.                         printf("\n     %d. Se encontro la palabra/frase: %s\n     Linea en que se encontro: %d.\n", encontrado, a, contador);
  54.                     }
  55.                     a = strtok (NULL, " ");
  56.                 }
  57.             }  
  58.             if (encontrado <= 0)
  59.             printf("\n     La palabra o frase no se encontro en el archivo %s.\n", nombre);
  60.            
  61.             printf("\n                               MENU DEL PROGRAMA\n");
  62.            
  63.             printf("\n     1. Elegir otra palabra a buscar.\n     2. Salir del programa.\n");
  64.            
  65.             printf("\n     Que desea seguir haciendo: ");
  66.             fflush(stdin);
  67.             scanf("%d", &opc);
  68.            
  69.             while (opc > 2 || opc < 0)
  70.             {
  71.                 printf("     Esa no es una opcion valida, por favor ingrese una opcion: ");
  72.                 fflush(stdin);
  73.                 scanf("%d", &opc);
  74.             }
  75.             if (opc == 2)
  76.             printf("\n                              PROGRAMA FINALIZADO\n\n");
  77.         }
  78.     }
  79.     else
  80.     {
  81.         printf("\n                  Hubo un error en la apertura del archivo...\n\n");
  82.         fclose(archivo);
  83.         return EXIT_FAILURE;
  84.     }
  85.     return EXIT_SUCCESS;
  86. }