Al final no he usado strtok en la función...y arreglado
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);
}
return 0;
}
void divideLinea(char* linea)
{
int i=0;
char *punt=linea;
cout<<"Linea a procesar: "<<linea<<endl;
while (linea[i]!='\0')
{
if (linea[i]=='#')
{
linea[i]='\0';
cout<<"dato: "<<punt<<endl;
punt=&linea[i+1];
}
i++;
}
cout<<"dato: "<<punt<<endl;
}