Título: Comparación de palabras en C Publicado por: genuine17 en 3 Junio 2017, 22:39 pm Hola, buenas! soy un principiante en esto de programación :xD he estado intentando extraer una clave ingresada por el usuario (Ej: ASDL03002) y buscarla dentro de un fichero para luego mostrar toda la línea donde se encuentre la clave.
Suponiendo este es el contenido de mi fichero: ASDF01003 Caja de Herramientas DFTS09886 Caja de Libros HJKL76543 Caja Vacía Quiero que el usuario entre por ej la segunda clave (DFTS09886) para buscarla dentro del fichero y que muestre en pantalla: "Clave: DFTS09886 Producto: Caja de Libros" ó "DFTS09886 Caja de Libros" esto es lo que llevo: #include <stdio.h> #include<stdlib.h> #include <string.h> #define LIMITE 150 int main() { int i; char cadena1 [LIMITE],aux[LIMITE]; printf("Ingrese la clave a buscar: \n"); gets(aux); FILE* fichero; fichero = fopen("Claves.txt", "rt"); while(!feof(fichero)) { i=0; do { fscanf (fichero, "%c", &cadena1); i++; } while (cadena1[i-1]>=32 && cadena1[i-1]<=126); if(strcmp(cadena1,aux)==0) /*supuestamente aquí comparo ambas cadenas para ver si son iguales pero al parecer no sirve :( */ { printf("\nCoincidencia encontrada!\n"); puts(cadena1); puts(aux); break; } cadena1='\0'; if(i==10) puts(cadena1); //Esta parte me commprueba que efectivamente extrae las claves } puts("\nProceso completado"); return 0; } Siento que mi error está en el bucle que uso para buscar las claves dentro del fichero pero la verdad estoy perdido :silbar: PD: El fichero real tiene muchas más líneas (no se si eso sea importante incluso ;D ) Título: Re: Comparación de palabras en C Publicado por: n-utz en 5 Junio 2017, 15:38 pm Buenas, mira primero te recomiendo que pongas tu codigo en su GESHI correspondiente, asì:
Código: ... Así serà mas entendible. Ahora Código: while (cadena1[i-1]>=32 && cadena1[i-1]<=126); Debería ser solamente >32 asi, no te toma el espacio, porque supongo que eso, te toma toda la linea, por ejemplo: Te toma "ASDF01003 Caja de Herramientas" y no solo "ASDF01003". Entonces las claves nunca coincidirán. También puedes reemplazarlo por: Código: fscanf(fichero, "%s", &cadena1); Supuestamente te tomaría hasta el espacio en blanco, y asi tendrás tu clave solamente, después deberías rebuscartela para obtener el objeto que abrirá con esa clave. Espero haberte ayudado, suerte. Título: Re: Comparación de palabras en C Publicado por: MAFUS en 5 Junio 2017, 18:12 pm Ya que cada caden es una línea del archivo tómala con fgets, así la recibes toda de una. Por cierto deberías usar también fgets en vez de gets (el archivo a usar es stdin).
|