我正在尝试拆分字符串,但不幸的是strtok
表现得非常奇怪
我有以下字符串get|user=password|23|info|hello
我尝试使用strtok广泛使用的方法,但不幸的是它将=
视为分隔符,我无法解析我的字符串。
因此get
解析正确而不是仅解析user
,而不是user=password
。
请帮助找到问题或建议任何其他方法来拆分字符串。 我正在为Arduino编程。
由于
代码
const char delimeter = '|';
char *token;
token = strtok(requestString, &delimeter);
// Handle parsed
token = strtok(NULL, &delimeter);
答案 0 :(得分:4)
来自cppreference,
delim - 指向标识分隔符的以空字符结尾的字节字符串的指针
您的方法不适合的要求是 null终止。您获取单个char
的地址,但显然您无法访问此符号之后的任何内容。但是,strtok
会搜索终止字符串的\0
字符。因此,您将进入未定义的行为领域。
相反,请使用
const char* delimiter = "|";
答案 1 :(得分:2)
改变这个:
const char delimeter = '|';
到此:
const char * delimeter = "|"; // note the double quotes