usar tipos leer imprimir funciones ejemplos datos como caracteres cadenas cadena arreglo c file while-loop strcmp

tipos - C Beginner: Cómo buscar palabras particulares en un archivo(línea por línea) en C



leer cadena de caracteres en c (2)

Necesito buscar dos palabras en particular en un archivo línea por línea y, si existen, imprimir "¡Encontrado!".

Esto es file.txt (tiene cuatro columnas)

bill gates 62bill microsoft beyonce knowles 300mill entertainment my name -$9000 student

La siguiente es la idea que tuve, pero parece que no funciona

char firstname[]; char lastname[]; char string_0[256]; file = fopen("file.txt","r+"); while((fgets(string_0,256,file)) != NULL) { //scans the line then sets 1st and 2nd word to those variables fscanf(file,"%s %s",&firstname, &lastname); if(strcmp(firstname,"beyonce")==0 && strcmp(lastname,"knowles")==0){ printf("A match has been found"); } } fclose(file);

Por favor ayuda. ¿Podría ser que el puntero no se está moviendo a la siguiente línea en el ciclo while? Y si es así, ¿cómo puedo solucionarlo?


En lugar de llamar a fscanf en el file después de que ya haya leído con fgets , debe llamar a sscanf en la variable string_0 en la que está copiando los datos en su llamada de fgets .


Prueba algo como esto.

int main(int argc, char **argv) { FILE *fp=fopen(argv[1],"r"); char tmp[256]={0x0}; while(fp!=NULL && fget(tmp, sizeof(tmp), fp)!=NULL) { if (strstr(tmp, "word1") printf("%s", tmp); else if (strstr(tmp, "word2") printf("%s", tmp); } if(fp!=NULL) fclose(fp); return 0; }