Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - spicecobra

#1
Programación C/C++ / Problema con C y Tokens
25 Agosto 2013, 02:52 AM
Hola, buenas!
Estoy con un enorme problema con C y los tokens.
Todo surge de este código:

#include <stdio.h>
#include <conio.h>
#include <string.h>
char *carga(int*,int);
void busqueda(char*,char*);
main()
{
  int i=0,j=0, n=0, opc; char *palabra, *texto;
  do {  printf("1- CARGA PALABRAS\n");
        printf("2- CARGA PROGRAMA\n");
        printf("3- BUSQUEDA\n");
        printf("4- SALIR\n");
        scanf(" %d", &opc);
        switch(opc) { case 1: { palabra=carga(&i,opc); break; };
                      case 2: { texto=carga(&j,opc); break; };
                      case 3: { busqueda(palabra, texto); break;};
                  }; } while(opc!=4);
  getche();
}
char *carga(int *x,int y)
{
   static char a[1000]; static char b[5000];
   if(y==1)
   { while((a[*x]=getchar())!=EOF)
     { ++(*x); };
   return a; 
   }
   else
   { while((b[*x]=getchar())!=EOF)
     { ++(*x);};
   return b;       
   };
}
void busqueda (char *z, char *w)

   char *token1;
   token1 = strtok(w," \n");
   while(token1!=NULL)
   { if ((strchr(z,(*token1))==NULL))
     printf("%s\n", token1);
     token1 = strtok (NULL, " \n");
   };
}       
     


La consigna es que ingrese una serie de palabras reservadas de un programa (opcion 1), que luego ingrese el programa (opcion 2); y que finalmente, cuando pulse la opcion 3: me muestre todas las palabras que no sean palabras reservadas.

Hasta las cargas, está todo bien. Surge el problema con los tokens. Cuando llamo a la función por primera vez me marca dos o tres palabras que no son reservadas (cuando hay más), y cuando la vuelvo a llamar, me devuelve unicamente la primera.

Algo está pasando con la función.

Por favor, necesito ayuda!

MUCHAS GRACIAS.