Vuelvo a dar otra vuelta sobre la misma idea, pero obtengo el mismo fallo:
Código C++:
Ver original#include <iostream>
#include <cstring>
using namespace std;
void divideLinea(char*);
int main()
{
char datos[]="\n\n$registro1#dato11#dato12#dato13$registro2#dato21#dato22largooooooooooo\nooooooooo#dato23#dato24\n$registro3#dato13##dato33";
//metodo cutre para quitar saltos de linea al principio y entre registros
for (int i=0;i<tam;i++)
{
if (datos[i]=='\n' && (datos[i+1]=='\n' || datos[i+1]=='$'))
datos[i]='$';
}
//fin del metodo cutre
char *p;
char token[]="$";
while (p)
{
divideLinea(p);//sustituir por cout<<p<<endl; y funcionará bien
}
return 0;
}
void divideLinea(char* linea)
{
char* p;
char token[]="#";
char buffer[300];
cout<<"linea: "<<buffer<<endl;
while (p)
{
cout<<p<<endl;
}
}
Sigo sin saber por qué la funcion divideLinea modifica el funcionamiento del bucle que se encuentra en la función principal