Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ingrid RG en 12 Abril 2016, 03:23 am



Título: Busqueda de Archivos
Publicado por: Ingrid RG en 12 Abril 2016, 03:23 am
Estoy realizando un programa que revisa en un archivo si existe la palabra pero tengo un error, deja de buscar cuando hay un salto de linea. Les dejo mi codigo

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. #define MAX 100
  5.  
  6. char palabra[MAX], *p, c;
  7. int  a=0, x;
  8. FILE *fp;
  9.  
  10.  
  11. void BuscarPalabra(){
  12. printf("\n Ingresa una palabra: ");
  13. fgets(palabra,MAX,stdin);
  14. int i=0,cont=0,j=0,h=0,flag=0;
  15. fp=fopen("diccionario", "r");
  16.  
  17. /**/
  18. while(palabra[i]!='\0'&&palabra[i]!=10){
  19. i++;
  20. cont++;
  21. }
  22. p=(char*)malloc(cont*sizeof(char));
  23. /*printf("hhh%c",palabra[cont]);
  24. printf("La palabra ingresada tiene %d caracteres\n",cont);*/
  25. while(!feof(fp)){
  26. /*c=fgetc(fp);*/
  27. fscanf(fp,"%c",&c);
  28. if(c!='*'&&c!=':'){
  29. *(p+j)=c;
  30. /*printf("%c",*p);*/
  31. j++;
  32. }
  33. }
  34. for(h=0;h<cont;h++){
  35. if(palabra[h]==*(p+h)){
  36. flag=1;
  37. }
  38. }
  39. if(flag==1){
  40. printf("\n La palabra si existe :) \n");
  41. }else{
  42. printf("\n La palabra no existe :( \n");
  43. }
  44. }
  45.  
  46. int main(){
  47.   BuscarPalabra();
  48.  
  49. }


Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Busqueda de Archivos
Publicado por: MAFUS en 13 Abril 2016, 00:37 am
Pon un ejemplo de ese diccionario.

Puede que este código te ayude
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4. #include <stdlib.h>
  5.  
  6. int main() {
  7.    char palabra[50];
  8.    char parchivo[50];
  9.    FILE *fp;
  10.    int i;
  11.    int encontrada = 0;
  12.  
  13.    printf("Buscar > ");
  14.    fgets(palabra, 50, stdin);
  15.    *strchr(palabra, '\n') = '\0'; // Elimino la nueva linea
  16.  
  17.    for(i = 0; i < strlen(palabra); ++i) // No sensible a la capitalización
  18.        palabra[i] = tolower(palabra[i]);
  19.  
  20.    fp = fopen("diccionario.txt", "r");
  21.    if(!fp) {
  22.        fprintf(stderr, "Archivo diccionario.txt no encontrado");
  23.        exit(EXIT_FAILURE);
  24.    }
  25.  
  26.    fgets(parchivo, 50, fp);
  27.    while(!encontrada && !feof(fp)) {
  28.        *strchr(parchivo, '\n') = '\0';
  29.  
  30.        for(i = 0; i < strlen(parchivo); ++i)
  31.            parchivo[i] = tolower(parchivo[i]);
  32.  
  33.        if(!strncmp(palabra, parchivo, 50)) // comparo dos cadenas
  34.            encontrada = 1;
  35.        fgets(parchivo, 50, fp);
  36.    }
  37.  
  38.    if(encontrada)
  39.        printf("Palabra encontrada\n");
  40.    else
  41.        printf("Palabra no encontrada\n");
  42.  
  43.    fclose(fp);
  44.  
  45.    return EXIT_SUCCESS;
  46. }
  47.