just for fun i did it this way.
Code:
char *input = "a.ds.ees.f.csg.cw.s.ab.s.f.s.ffsd.j" ;
unsigned int length = strlen(input);
char delimiter = '.';
unsigned int numFields=0;
unsigned int *delimiterPositions=new unsigned int[1];
for(int i=0;i<length;i++)
{
if(input[i]==delimiter)
{
numFields++;
realloc(delimiterPositions,numFields*sizeof(unsigned int));
delimiterPositions[numFields-1]=i;
}
}
char **parsed = new char*;
unsigned int start = 0;
unsigned int end;
for(int i=0;i<numFields;i++)
{
end = delimiterPositions[i];
parsed[i]=new char[end-start];
memcpy(parsed[i],input+start,end-start);
start = end+1;
}
now, i originally used realloc on parsed, but after several successful iterations, i get an error. any ideas?
Code:
char *input = "a.ds.ees.f.csg.cw.s.ab.s.f.s.ffsd.j" ;
char **parsed = new char*;
char delimiter = '.';
unsigned int numFields=0;
char *start = input;
char *end= (char *)memchr(input,delimiter,strlen(input));
while( end!=NULL )
{
numFields++;
realloc(parsed,numFields*sizeof(char *));
char *end= (char *)memchr(start,delimiter,strlen(start));
int size = end-start;
parsed[numFields-1]=new char[end-start];
memcpy(parsed[numFields-1],start,end-start);
start = end+1;
}