PostgreSQL Externe C-Funktion
-
Ich hab voll vergessen, dass ich einen funktionierenden Splitter habe
// The Splitfunction char** split_string1(char* str, const char* delim) { char* tmp; char** t = (char**)malloc(sizeof(char*) * 1024); char** tokens = t; tmp = strtok(str, delim); while(tmp != NULL) { *tokens = (char*)malloc(sizeof(char) * strlen(tmp+1)); *tokens = strdup(tmp); tokens++; tmp = strtok(NULL, delim); } return t; }
Er splittet den String ja nur auf einen Delimiter(Wahlweise " "oder ","). Mein Problem besteht halt , dass Ergebnis dieser Funktion wieder zu splitten mit genau diesen Funktion. Also muss diese Funktion 2 mal bei mir in der Main-funktion auftauchen.
-
Das Ding ist Schrott.
Zuviel überflüssiges
malloc
,strdup
ohnefree
und ohne Verstand.Du kannst den Formatstring von sscanf auch selber zusammen bauen:
char formatstring[100]; char delimiter[] = " ,"; strcpy(formatstring, "%lf%*1["); strcat(formatstring,delimiter); strcat(formatstring,"]%n"); // formatstring ist jetzt "%lf%*1[ ,]%n" while( 1==sscanf(s+=n, formatstring, &d, &n) ) { sum += d*d; }
Allerdings muss man wissen was man als delimiter schreibt, da man Rücksicht auf die Eigenheiten vom Formatspecifier %[ nehmen muss.
-
Eine ehrliche Antwort
Aber vielen Dank