Public feed
#602409
char **split(char *string,char delim)
{
char **a=NULL,*pch=NULL;
int element=0,i=0,z=0;
if((a=(char **)malloc(sizeof(char *)))==NULL) return NULL;
pch=strchr(string,delim);
//we do this to catch the first element
if(pch!=NULL)
{
a[element] =(char *) malloc(1);
z=0;
for(i=0;i<=(pch-string+1);i++)
{
if((a[element]=(char *)realloc(a[element],sizeof(char *)*(z+1)))==NULL) return NULL;
if(string[i]==delim) { a[element][z]='\0'; break; }
a[element][z]=string[i];
z++;
}
element++;
//cycle through the rest
while (pch!=NULL)
{
a=(char **)realloc((char *)a,sizeof(char *) * (element+1));
if((a[element] =(char *) malloc(1))==NULL) return NULL;
z=0;
for(i=(pch-string+1);i<=strlen(string);i++)
{
if((a[element]=(char *)realloc(a[element],sizeof(char *)*(z+1)))==NULL) return NULL;
if(string[i]==delim) { a[element][z]='\0'; element++; break; }
a[element][z]=string[i];
z++;
}
pch=strchr(pch+1,delim);
}
// just allocate a little more so we can while it ok
element++;
if((a=(char **)realloc((char *)a,sizeof(char *) * (element+1)))==NULL) return NULL;
a[element]=NULL;
return (char **)a;
}
return NULL;
}