Busqueda de Archivos

Iniciado por Ingrid RG, 12 Abril 2016, 03:23 AM

0 Miembros y 1 Visitante están viendo este tema.

Ingrid RG

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

MAFUS

#1
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;
}