Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] realizar una opcion de buscar con strcmp

Estas en el tema de realizar una opcion de buscar con strcmp en el foro de C/C++ en Foros del Web. mi problema es el siguiente: Código: void buscar() { system("cls"); char u [20]; int c; FILE *fichero; fichero= fopen("libro.txt", "r"); while(!feof(fichero)) { printf("Ingrese la palabra ...
  #1 (permalink)  
Antiguo 05/04/2011, 12:42
Avatar de Aeonx  
Fecha de Ingreso: abril-2011
Ubicación: Los angeles
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Exclamación realizar una opcion de buscar con strcmp

mi problema es el siguiente:
Código:
void buscar()
    {   system("cls");
     char u [20];    
     int c;
     FILE *fichero;
     fichero= fopen("libro.txt", "r");
    
     while(!feof(fichero))
     {
                           printf("Ingrese la palabra a buscar: ");
                           scanf("%s",&u);
                          if(strcmp("u",libro.nombre)== 0)  //MI PROBLEMA 
                          {                      
                                                                   
                                                                         printf("La palabra es:%s\n",libro.nombre);
                                                                         printf("Definicion:%s\n",libro.definicion);
                                                                         printf("Codigo:%s\n\n",libro.codigo);
                                                                                                                                                
                                                                         }
       
       printf("No se a encontrado la palabra\n\n");
       printf("1.Desea ingresar la palabra\n");
       printf("2.Buscar otra palabra\n");
       printf("3.Salir\n\n");
       printf("Su opcion es: ");
       scanf("%i",&c);
       if(c==1){
            grabar();
       }else if(c==2){
             buscar();
       }else if(c==3){
             exit(1);
       }
                                                                         }
   
     {
     fclose(fichero);
     }
Bueno el problema en si es que no entra al IF anteriormente marcado, solo pasa al WHILE y me mantiene siempre en el "no a encontrado la palabra" , habiendo revisado anteriormente que la palabra si esta en el archivo si alguien me lograra ayudar se lo agradeceria de ante mano muchas gracias ^^
  #2 (permalink)  
Antiguo 05/04/2011, 15:15
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Respuesta: realizar una opcion de buscar con strcmp

Tu problema parece mas un error de dedo. Te dara risa cuando te des cuenta...

Cita:
if(strcmp("u",libro.nombre)== 0)
Esa es tu linea problema.

strcmp tiene como argunmento 2 cadenas, de acuerdo???

Tu quieres comparar la cadena que obtuviste con scanf, con la cadena que hay en libro.nombre, cierto???

Entonces por que pones u entre comillas????

Estas buscando "u"????
No. Estas buscando el contenido de la variable u.

Espero que te sirva.

Saludos
  #3 (permalink)  
Antiguo 05/04/2011, 17:05
 
Fecha de Ingreso: octubre-2010
Ubicación: Edo. de México
Mensajes: 94
Antigüedad: 13 años, 6 meses
Puntos: 9
Respuesta: realizar una opcion de buscar con strcmp

Tu programa esta muy mal estructurado.

1. En ningun momento lees información de tu archivo, y
2. Tienes algo que parece ser una función recursiva pero sin condición de salida

Además convendría que nos dijieras que quieres hacer?, a simple vista parece que quieres buscar una palabra en un archivo, pero mejor no suponemos nada y nos dices de que se trata.
  #4 (permalink)  
Antiguo 05/04/2011, 17:55
Avatar de Aeonx  
Fecha de Ingreso: abril-2011
Ubicación: Los angeles
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Respuesta: realizar una opcion de buscar con strcmp

Si la verdad fue un errror estupido, ni cuenta me habia dado pero la verdad sige sin recorrer el fichero ni siquiera compara nada y no se por que D:<.
  #5 (permalink)  
Antiguo 05/04/2011, 18:08
Avatar de Aeonx  
Fecha de Ingreso: abril-2011
Ubicación: Los angeles
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Respuesta: realizar una opcion de buscar con strcmp

Bien gracias a todos por su ayuda ya logre solucionar el problema con
Código:
 
void buscar()
    {   system("cls");
     char u [20];    
     int c;
     FILE *fichero;
     fichero= fopen("libro.txt", "r");
    
     printf("Ingrese la palabra a buscar: ");
     scanf("%s",&u);
     
     while(!feof(fichero))
     {
                           if(fread(&libro,sizeof(libro),1,fichero)){
                                                                          
                          if(strcmp(u,libro.nombre)== 0)
                          {                      
                                                               
                                                                         printf("La palabra es:%s\n",libro.nombre);
                                                                         printf("Definicion:%s\n",libro.definicion);
                                                                         printf("Codigo:%s\n\n",libro.codigo);
                                                                         }                                                                       
                                                                         }else {
                                                                         printf("No se a encontrado la palabra\n\n");
                                                                         printf("1.Desea ingresar la palabra\n");
                                                                         printf("2.Buscar otra palabra\n");
                                                                         printf("3.Salir\n\n");
                                                                         printf("Su opcion es: ");
                                                                         scanf("%i",&c);
                                                                         if(c==1){
                                                                         grabar();
                                                                         }else if(c==2){
                                                                         buscar();
                                                                         }else if(c==3){
                                                                         exit(1);
                                                                         }
       }
       
    
      }
   
     {
     fclose(fichero);
     }
En esos 2 IF pude lograr entrar al fichero y comprar la palabra que ingrese con las que ya estaban en el fichero. Muchas gracias por su ayuda =-)
  #6 (permalink)  
Antiguo 05/04/2011, 19:26
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Respuesta: realizar una opcion de buscar con strcmp

Bueno, no esta mal. Solo que el If que va con fread no es absolutamente necesario.

Seria mas limpio omitirlo.

Saludos
  #7 (permalink)  
Antiguo 06/04/2011, 03:47
Avatar de Aeonx  
Fecha de Ingreso: abril-2011
Ubicación: Los angeles
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Respuesta: realizar una opcion de buscar con strcmp

Si la verdad tienes razon, ya lo omiti ^_^, se agradece la preocupacion

saludos

Etiquetas: opcion, realizar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:43.