【发布时间】:2014-08-30 15:14:39
【问题描述】:
这是我用 C 编写的第一个项目,我正在尝试将 C 字符串拆分为“单词”。
以下几行用于测试并正常工作:
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 包含“a b c d e f g h”,这是输出(正确):
SliceTest2
a
b
c
d
e
f
现在,当我使用以下行时:
char *sliceStr(char fullString[]){
char *ptr;
ptr = strtok(packetBuffer, " ");
ptr = strtok(NULL, "\n\t ");
return("%s", ptr);
}
并调用它们(在 packetBuffer "a b c d e f g h" 中使用相同的内容):
Serial.println(sliceStr(packetBuffer));
应该打印
b
但什么都不做。
顺便说一句,这是一个 arduino 项目,但是一个特定于 C 的问题。
lg, couka
【问题讨论】:
-
不应该是
char *sliceStr(char *packetBuffer){吗? -
ptr = strtok(packetBuffer, " ");-->>ptr = strtok(fullString, " "); -
顺便说一下,我不认为
return("%s", ptr);像你认为的那样工作。 -
return("%s", ptr);- 这是什么意思?