Test Foro de elhacker.net SMF 2.1

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

#include<stdio.h>
#include<stdlib.h>

#define MAX 100

char palabra[MAX], *p, c;
int  a=0, x;
FILE *fp;


void BuscarPalabra(){
printf("\n Ingresa una palabra: ");
fgets(palabra,MAX,stdin);
int i=0,cont=0,j=0,h=0,flag=0;
fp=fopen("diccionario", "r");

/**/
while(palabra[i]!='\0'&&palabra[i]!=10){
i++;
cont++;
}
p=(char*)malloc(cont*sizeof(char));
/*printf("hhh%c",palabra[cont]);
printf("La palabra ingresada tiene %d caracteres\n",cont);*/
while(!feof(fp)){
/*c=fgetc(fp);*/
fscanf(fp,"%c",&c);
if(c!='*'&&c!=':'){
*(p+j)=c;
/*printf("%c",*p);*/
j++;
}
}
for(h=0;h<cont;h++){
if(palabra[h]==*(p+h)){
flag=1;
}
}
if(flag==1){
printf("\n La palabra si existe :) \n");
}else{
printf("\n La palabra no existe :( \n");
}
}

int main(){
  BuscarPalabra();

}



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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

int main() {
    char palabra[50];
    char parchivo[50];
    FILE *fp;
    int i;
    int encontrada = 0;
   
    printf("Buscar > ");
    fgets(palabra, 50, stdin);
    *strchr(palabra, '\n') = '\0'; // Elimino la nueva linea
   
    for(i = 0; i < strlen(palabra); ++i) // No sensible a la capitalización
        palabra[i] = tolower(palabra[i]);

    fp = fopen("diccionario.txt", "r");
    if(!fp) {
        fprintf(stderr, "Archivo diccionario.txt no encontrado");
        exit(EXIT_FAILURE);
    }
   
    fgets(parchivo, 50, fp);
    while(!encontrada && !feof(fp)) {
        *strchr(parchivo, '\n') = '\0';
       
        for(i = 0; i < strlen(parchivo); ++i)
            parchivo[i] = tolower(parchivo[i]);
           
        if(!strncmp(palabra, parchivo, 50)) // comparo dos cadenas
            encontrada = 1;
        fgets(parchivo, 50, fp);
    }
   
    if(encontrada)
        printf("Palabra encontrada\n");
    else
        printf("Palabra no encontrada\n");
   
    fclose(fp);
   
    return EXIT_SUCCESS;
}