Ver Mensaje Individual
  #6 (permalink)  
Antiguo 18/12/2013, 13:19
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años
Puntos: 10
Respuesta: Extraer palabas de un fichero de texto

Vuelvo a dar otra vuelta sobre la misma idea, pero obtengo el mismo fallo:
Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5. void divideLinea(char*);
  6.  
  7. int main()
  8. {
  9.     char datos[]="\n\n$registro1#dato11#dato12#dato13$registro2#dato21#dato22largooooooooooo\nooooooooo#dato23#dato24\n$registro3#dato13##dato33";
  10.     int tam=strlen(datos);
  11.     //metodo cutre para quitar saltos de linea al principio y entre registros
  12.     for (int i=0;i<tam;i++)
  13.     {
  14.         if (datos[i]=='\n' && (datos[i+1]=='\n' || datos[i+1]=='$'))
  15.         datos[i]='$';
  16.     }
  17.     //fin del metodo cutre
  18.     char *p;
  19.     char token[]="$";
  20.  
  21.     p=strtok (datos,token);
  22.     while (p)
  23.     {
  24.         divideLinea(p);//sustituir por cout<<p<<endl; y funcionará bien
  25.         p=strtok(0,token);
  26.     }
  27.     return 0;
  28. }
  29.  
  30. void divideLinea(char* linea)
  31. {
  32.     char* p;
  33.     char token[]="#";
  34.     char buffer[300];
  35.     strcpy (buffer,linea);
  36.     cout<<"linea: "<<buffer<<endl;
  37.     p=strtok (buffer,token);
  38.     while (p)
  39.     {
  40.         p=strtok (0,token);
  41.         cout<<p<<endl;
  42.     }
  43. }

Sigo sin saber por qué la funcion divideLinea modifica el funcionamiento del bucle que se encuentra en la función principal