Autor Tema: Ayuda con función strtok en C

0 Usuarios y 1 Visitante están viendo este tema.

07 Diciembre, 2008, 06:59 am
Leído 2966 veces

Watt

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 328
  • Karma: +0/-0
  • Sexo: Masculino
  • Dos numeros manejan el mundo?
Hola, como se que mas de uno que anda por aca debe programar, les pido si me pueden dar una mano con esto que me esta retrasando bastante.

Hize este codigo, que lo que hace es guardar los resultados de la funcion strtok en 3 variables asi luego los puedo usar.

Código:
Código: [Seleccionar]
#include<stdio.h>
#include<string.h>
main()
{
      char campo[]="ARTICULO;PRECIO;VENDIDO";
      char *token;
      char *var1,*var2,*var3;
      int contador=0;
      token=strtok(campo,";");
      while( token != NULL )
      {
             if( contador == 0 )
             {
                 var1=token;//Guarda en la variable 1 el primer campo
             }   
             if ( contador == 1 )
             {
                  var2=token;//Segundo campo
             }
             if( contador == 2 )
             {
                 var3=token;//Tercer campo
             }         
             token=strtok(NULL,";");
             contador++;
             
      }
      printf("%s %s %s\n",var1,var2,var3);//Este imprime "ARTICULO  PRECIO  VENDIDO"
      if (var3=="VENDIDO")//Este bloque no funciona :(
      {
          printf("\n\nAnduvo");
      }         
      getchar();
}
Como dice el codigo, al compilar y ejecutar este programa solo se lee el renglon del "printf" y no el que esta dentro del if, pero no da error de ejecucion seguramente algo mal en la expresion del if puse. Como puedo hacer para que el bloque if ande ?

Saludos y gracias.!


funcion  función

07 Diciembre, 2008, 07:13 am
Respuesta #1

Gerardo Exequiel Pozzi

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 120
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Hola
En C no podes comparar cadenas de chars directamente.

Cuando haces var3=="VENDIDO", lo que estás comparando es el valor del puntero var3 (o sea una dirección de memoria), con la dirección de memoria del char 'V' que es una constante.

Para eso debes usar la función strcmp() o strncmp(): strcmp(var3, "VENDIDO"); por cierto reemplaza los if correspondientes por else if ;)

¡Salut!

07 Diciembre, 2008, 05:17 pm
Respuesta #2

Watt

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 328
  • Karma: +0/-0
  • Sexo: Masculino
  • Dos numeros manejan el mundo?
Oh! Muchisimas gracias por contestar tan rápido, pensar que lo mismo lo pregunte en un foro de prgramación hace dos semanas y no me supieron responder.