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