|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2000
Città: Ferrara
Messaggi: 2001
|
[C] La funzione che non funziona
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
La funzione è questa: Codice:
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);
}
__________________
Ryzen 5 5600X, 32GB DDR4-3000MHz, Asrock B550M-Pro4, Case Fractal Design Dfine Mini, SSD Samsung 980Pro 500GB http://www.flickr.com/photos/paoloberno/ Ultima modifica di Berno : 20-09-2004 alle 09:51. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jul 2001
Messaggi: 63
|
Codice:
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
}
string[j]=0; //la vogliamo terminiare questa stringa ?:P
printf("-%s\n",string);
data[z]=(char *) calloc(strlen(string)+1); //2
strcpy(data[z],string); //2
z++;
// clean(string);
}
else i++;
}
}
free(string);
}
Ovviamente se un campo ha lunghezza maggiore a 99 caratteri va tutto in vacca Ultima modifica di Zorgolo : 20-09-2004 alle 09:20. |
|
|
|
|
|
#3 | |||
|
Senior Member
Iscritto dal: Mar 2000
Città: Ferrara
Messaggi: 2001
|
Quote:
Quote:
Quote:
__________________
Ryzen 5 5600X, 32GB DDR4-3000MHz, Asrock B550M-Pro4, Case Fractal Design Dfine Mini, SSD Samsung 980Pro 500GB http://www.flickr.com/photos/paoloberno/ |
|||
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2000
Città: Ferrara
Messaggi: 2001
|
Re: [C] La funzione che non funziona
Sorry, doppio post...
__________________
Ryzen 5 5600X, 32GB DDR4-3000MHz, Asrock B550M-Pro4, Case Fractal Design Dfine Mini, SSD Samsung 980Pro 500GB http://www.flickr.com/photos/paoloberno/ |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jul 2001
Messaggi: 63
|
uhm, boh.. questa funziona, comunque avevi fatto un po' di casino con malloc/calloc (non me n'ero accorto lol) e non ritornavi un valore ...
Codice:
char **divideline (char *line)
{
int i=0,j=0,z=0;
char *string=(char *)malloc(100*sizeof(char));
char **data=(char **)malloc(100*sizeof(char*));
while (1)
{
if ( !line[i] )
break;
else {
if (line[i] == ',')
{
i++;
continue;
}
for (j=0;(line[i] != ',') && ( line[i] ); )
{
string[j++]=line[i++]; //1
}
string[j]=0; //la vogliamo terminiare questa stringa ?:P
printf("-%s\n",string);
data[z]=(char *) malloc(strlen(string)+1); //2
strcpy(data[z],string); //2
z++;
}
}
free(string);
return data;
}
Ultima modifica di Zorgolo : 20-09-2004 alle 12:27. |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Mar 2000
Città: Ferrara
Messaggi: 2001
|
Quote:
Quale valore non ritornavo?
__________________
Ryzen 5 5600X, 32GB DDR4-3000MHz, Asrock B550M-Pro4, Case Fractal Design Dfine Mini, SSD Samsung 980Pro 500GB http://www.flickr.com/photos/paoloberno/ |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:53.



















