• Miércoles 1 de Mayo de 2024, 21:23

Autor Tema:  Descomponer Cadena  (Leído 2648 veces)

LuisMizgz

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Descomponer Cadena
« en: Jueves 12 de Junio de 2008, 19:33 »
0
Buenas a todos.

Tengo un fichero con lineas con el siguiente formato:
10;1;Sabiñanigo-Zaragoza;173;21
El ";" es un separador.

Lo que necesito es almacenar cada campo en una variable diferente, para con un for ir impriendo por separado cada campo de cada linea.

Ejemplo:
etapa=10 (int)
disputada=1 (int)
Localidades=Sabiñanigo-Zaragoza (char)
kilometros=173 (int)
ganador=21 (int)

como podria acerlo?? gracias de antemano!

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: Descomponer Cadena
« Respuesta #1 en: Jueves 12 de Junio de 2008, 21:00 »
0

LuisMizgz

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Descomponer Cadena
« Respuesta #2 en: Jueves 12 de Junio de 2008, 21:35 »
0
ya e estado mirando eso, pero no se como estructurar el bucle para que cada token se meta en una variable diferente!

Lamento las molestias, pero esq soy nuevo en esto y como es para clase lo necesito!

Un saludo!

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: Descomponer Cadena
« Respuesta #3 en: Jueves 12 de Junio de 2008, 23:33 »
0
Código: Text
  1. ...
  2.  
  3. /* seguramente ya tendras el modulo para obtener los datos
  4.  * del fichero y volcarlos a la cadena tira
  5.  */
  6. char *tira[64];
  7. char *pToken;
  8.  
  9. /* solo como ejemplo, pero considero que esto deberia ser
  10.  * una estructura o inclusive podria crearse una clase
  11.  * que maneje este tipo de bd...
  12.  */
  13. int etapa;
  14. int disputada;
  15. char *localidades[32];
  16. int kilometros;
  17. int ganador;
  18.  
  19. /* se inicializa pasando como parametros la cadena a
  20.  * descomponer y el separador
  21.  */
  22.   pToken = strtok(tira,";" );
  23.  
  24. /* el primer token se obtiene de esta forma */
  25.   etapa = (int) pToken;
  26.  
  27.  
  28. /*  se recorre la cadena */
  29.   int i = 1;
  30.   while (pToken != NULL)
  31.   {
  32. /* se obtiene el sgte. */
  33.     pToken = strtok(NULL,";");
  34.  
  35. /* ya habras visto del porque mejor manejarlo como un arreglo de estructuras, para evitar
  36.   * esta pesima implementacion
  37.   */
  38.     diputada = pToken;
  39.   }
  40. ...
  41.  

que haz hecho??

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: Descomponer Cadena
« Respuesta #4 en: Viernes 13 de Junio de 2008, 00:16 »
0
por andar en carreras, algo mas decente...


Código: Text
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7. int i;
  8. char tira[] = {"10;1;Sabiñanigo-Zaragoza;173;21"};
  9. char *pToken;
  10.  
  11. char *registro[5];
  12. /*
  13. registro[0] = etapa;
  14. registro[1] = diputada;
  15. registro[2] = localidades;
  16. registro[3] = kilometros;
  17. registro[4] = ganador;
  18.  */
  19.   pToken = strtok(tira,";");
  20.   registro[0] = pToken;
  21.  
  22.   i = 1;
  23.   while (pToken != NULL)
  24.   {
  25.     pToken = strtok(NULL,";");
  26.     registro[i] = pToken;
  27.    
  28.     i = (i + 1);
  29.   }
  30.  
  31.   printf("%s\n",registro[0]);
  32.   printf("%s\n",registro[1]);
  33.   printf("%s\n",registro[2]);
  34.   printf("%s\n",registro[3]);
  35.   printf("%s\n",registro[4]);
  36.  
  37. return 0;
  38. }
  39.  
  40.