pointer, printf, unerklärliches Verhalten vom Atmega

OP Persönliche Seite #950302
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren