Ich habe ein Problem in Bezug auf die Trennung der Inhalte einer Zeichenfolge an eine Funktion übergeben. Die Funktion wird mit einem String wie folgt aufgerufen:Zerlegung von Strings in Strings mit strtok() funktioniert nicht
ADD:Nathaniel:50
Wo ADD die Protokollnamen sein wird, wird Nathaniel der Schlüssel sein, und 50 wird der Wert sein, die alle mit einem :
getrennt.
Mein Code sieht wie folgt aus:
bool add_to_list(char* buffer){
char key[40];
char value[40];
int* token;
char buffer_copy[1024];
const char delim[2] = ":";
strcpy(buffer_copy, buffer);
token = strtok(NULL, delim);
//strcpy(key, token);
printf("%d",token);
printf("%p",token);
while(token != NULL){
token = strtok (NULL, delim);
}
//strcpy(value, token);
printf("%s", key);
printf("%s", value);
push(key, value);
return true;
}
Was ich versuche zu tun, speichern Sie jede Taste und Wert in einer separaten Variable, mit strtok()
. Beachten Sie, dass ich versuche, den zweiten und dritten Wert (Nathaniel
und 50
) nicht das erste Bit (ADD
) zu speichern.
Wenn ich den Code ausführen, gibt es mir einen Segmentierungsfehler, so vermute ich, dass ich versuche, auf eine ungültige Speicheradresse statt auf einen Wert zuzugreifen. Ich muss nur das zweite und dritte Bit der Zeichenfolge speichern. Kann mir bitte jemand helfen?
EDIT: ich den Code geändert haben wie folgt aussehen:
bool add_to_list(char* buffer){
char *key, *value, *token;
const char *delim = ":";
token = strtok(buffer, delim);
//printf("%d",token);
printf("%s",token);
key = strtok(NULL, delim);
value = strtok(NULL, delim);
printf("%s", key);
printf("%s", value);
//push(key, value);
return true;
}
Aber ich bin immer noch die gleiche Segmentierungsfehler bekommen (core dumped) Fehler
Sie speichern nie etwas in 'Schlüssel' oder' Wert'. – Barmar
'int * token;' -> 'char * token;' – BLUEPIXY
'const char [2] delim' ->' const char * delim' – abligh