Это мой первый проект, написанный на C, и я пытаюсь разбить C-строку на «слова».strtok дает мне только первый фрагмент
следующие строки для тестирования и работать нормально:
Serial.println("SliceTest2");
char *ptr;
char delimiter[] = " ,";
ptr = strtok(packetBuffer, delimiter);
Serial.println(ptr);
ptr = strtok(NULL, delimiter);
Serial.println(ptr);
ptr = strtok(NULL, delimiter);
Serial.println(ptr);
ptr = strtok(NULL, delimiter);
Serial.println(ptr);
ptr = strtok(NULL, delimiter);
Serial.println(ptr);
ptr = strtok(NULL, delimiter);
Serial.println(ptr);
С packetBuffer, содержащий "ABCDEFGH" это выход (который является правильным):
SliceTest2
a
b
c
d
e
f
Теперь, когда я используя следующие строки:
char *sliceStr(char fullString[]){
char *ptr;
ptr = strtok(packetBuffer, " ");
ptr = strtok(NULL, "\n\t ");
return("%s", ptr);
}
и называть их (агин с тем же содержимым в пакетеBuf FER "а б д е г ч"):
Serial.println(sliceStr(packetBuffer));
он должен напечатать
b
, но делает ничего.
Это проект arduino, но проблема с C-спецификой.
Л.Г., couka
Не должно быть 'char * sliceStr (char * packetBuffer) {'? – tia
'ptr = strtok (packetBuffer," ");' - >> 'ptr = strtok (fullString," ");' – wildplasser
Кстати, я не думаю 'return ("% s ", ptr); 'работает так, как вы думаете, что это работает. – tia