Ich habe eine Funktion mit der ich einen string zerlegen möchte:
1 | void parse () {
|
2 | char *pch;
|
3 | char *module_cmd = "VAR1:VAR2:BEFEHL:TEST";
|
4 | u8 module_ident = 0;
|
5 |
|
6 | pch = (char*) memchr (module_cmd, ':', strlen(module_cmd));
|
7 | if (NULL != pch) {
|
8 | module_ident = (module_cmd[(pch - module_cmd)+1]^
|
9 | module_cmd[(pch - module_cmd)+2]^
|
10 | module_cmd[(pch - module_cmd)+3])-1;
|
11 | }
|
12 |
|
13 | printf("\r\nAusgabetest1: %s",module_cmd);
|
14 | module_cmd = strtok_r(module_cmd,":",&pch);
|
15 | module_cmd = strtok_r(NULL,'\0',&pch);
|
16 |
|
17 | module_cmd = strtok_r(module_cmd,":",&pch);
|
18 | module_cmd = strtok_r(NULL,'\0',&pch);
|
19 |
|
20 | printf("\r\nAusgabetest1: %s",module_cmd);
|
21 | }
|
Beim Ausgabetest1 kommt: VAR1:VAR2:BEFEHL:TEST
Beim Ausgabetest2 kommt: BEFEHL:TEST
Soweit so gut, kommentiere ich die Zeile mit der prontf-Ausgabetest1
aus, kommt beim Ausgabetest2 nur: <0>
Ich habe festgestellt, dass es nicht unbedingt an den strtok_r
Funktionen liegt. Wenn ich die Suche nach de, Zeichen ":" nicht mache,
ist die Ausgabe auch in Ordnung. Irgendwie stehe ich seit ein paar
Stunden auf dem Schlauch. Sieht jemand vielleicht, was einem sofort ins
Auge sticht?