elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Comparación de palabras en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Comparación de palabras en C  (Leído 1,897 veces)
genuine17

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Comparación de palabras en C
« 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 )


En línea

n-utz

Desconectado Desconectado

Mensajes: 165

Babylon es el vampiro!


Ver Perfil
Re: Comparación de palabras en C
« Respuesta #1 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.



En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Comparación de palabras en C
« Respuesta #2 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).
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sustituir palabras en palabras...
Java
soser 4 5,203 Último mensaje 18 Julio 2011, 02:06 am
por Valkyr
como recorrer un archivo de palabras vetadas y descartarlas para una comparacion
Java
or.gutierrez 6 3,208 Último mensaje 4 Noviembre 2014, 20:52 pm
por or.gutierrez
Obtener el porcentaje de oraciones con 1 palabra, 2 palabras, 3 palabras, etc.
Scripting
Wil630 5 4,456 Último mensaje 2 Noviembre 2015, 22:58 pm
por Wil630
Comparacion de vectores
Programación C/C++
mbxxx103 1 2,365 Último mensaje 1 Septiembre 2021, 03:12 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines