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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


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

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Problema con C y Tokens
« en: 25 Agosto 2013, 02:52 am »

Hola, buenas!
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.


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Problema con C y Tokens
« Respuesta #1 en: 25 Agosto 2013, 18:11 pm »

Creo que tu codigo rompe la mayoria de las normas de codificacion. No es legible y tiene poco sentido. Me explico:
Código
  1. char *carga(int *x,int y)
  2. {
  3.   static char a[1000]; static char b[5000];
  4.   if(y==1)
  5.   { while((a[*x]=getchar())!=EOF)
  6.     { ++(*x); };
  7.   return a;  
  8.   }
  9.   else
  10.   { while((b[*x]=getchar())!=EOF)
  11.     { ++(*x);};
  12.   return b;        
  13.   };
  14. }

No tiene sentido que unifiques las lecturas en una sola funcion si luego dicha funcion va a tener dos implementaciones diferentes. Ademas en vez de usar buffers estaticos dentro de la función deberias pasarlos como argumentos. Si eliminas los buffers estaticos vas a tener la misma implementacion para los dos casos.

Y otras tantas mas, pero estoy con una tablet y es mas complicado escribir... si te speras a septiembre te comento mas detalles si quieres.

Hablando de errores:

strtok modifica la cadena que se le pasa como argumento.

Para que todas las busquedas te devuelvan el mismo resultado tienes que copiar la lista de palabras en otro buffer y lanzar strtok pasando como argumento este segundo buffer.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con "tokens"
Scripting
nhaalclkiemr 3 3,363 Último mensaje 24 Mayo 2007, 02:11 am
por sirdarckcat
Tokens?
PHP
Shell Root 5 5,921 Último mensaje 27 Abril 2011, 22:29 pm
por ~ Yoya ~
(Solucionado) [Batch] Problema con un FOR y el límite de tokens
Scripting
Eleкtro 4 3,007 Último mensaje 21 Enero 2012, 23:30 pm
por Eleкtro
problema con menu y tokens
Programación C/C++
thapitufa 2 2,465 Último mensaje 2 Diciembre 2012, 23:41 pm
por thapitufa
[BATCH] [RESUELTO] Problema con tokens en comando FOR /F
Scripting
Meine programmen 2 4,080 Último mensaje 23 Diciembre 2012, 15:10 pm
por Meine programmen
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines