Berno
20-09-2004, 00:11
Sto scrivendo una funzione che data una stringa in formato csv ne separi i componenti creando un array delle stringhe estratte, sulla carta niente di complicato o almeno speravo :muro:...
La funzione è questa:
char ** divideline (char *line)
{
int i=0,j=0,z=0;
char *string=(char *)calloc(100*sizeof(char));
char **data=(char **)malloc(100*sizeof(char*));
while (1)
{
if ((*(line+i)==0)||(*(line+i)==-1)) break;
else if (*(line+i)!=',')
{
for (j=0;(*(line+i)!=',')&&(*(line+i)!=0);i++,j++)
{
*(string+j)=*(line+i); //1
}
printf("-%s\n",string);
*(data+z)=(char *)calloc(100*sizeof(char)); //2
strcpy(*(data+z),string); //2
z++;
clean(string);
}
else i++;
}
free(string);
}
L'errore sembra essere nella linea commentata con 1 mentre se commento le due righe commentate con 2 tutto funziona correttamente ma ovviamente mi visualizza solo le stringhe senza metterle nell'array...
La funzione è questa:
char ** divideline (char *line)
{
int i=0,j=0,z=0;
char *string=(char *)calloc(100*sizeof(char));
char **data=(char **)malloc(100*sizeof(char*));
while (1)
{
if ((*(line+i)==0)||(*(line+i)==-1)) break;
else if (*(line+i)!=',')
{
for (j=0;(*(line+i)!=',')&&(*(line+i)!=0);i++,j++)
{
*(string+j)=*(line+i); //1
}
printf("-%s\n",string);
*(data+z)=(char *)calloc(100*sizeof(char)); //2
strcpy(*(data+z),string); //2
z++;
clean(string);
}
else i++;
}
free(string);
}
L'errore sembra essere nella linea commentata con 1 mentre se commento le due righe commentate con 2 tutto funziona correttamente ma ovviamente mi visualizza solo le stringhe senza metterle nell'array...