Estoy con un enorme problema con C y los tokens.
Todo surge de este código:
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.