在C中,解析具有多个分隔符的字符串的最佳方法是什么?假设我有一个字符串A,B,C*D
并希望存储ABC D的这些值。我不确定如何优雅地处理*
,而不是存储最后一个字符串{{1}然后使用C*D
分隔符单独解析它。
如果只是*
我使用strtok()并忽略A,B,C,*D
的第一个索引来获得D,但*D
之前没有逗号所以我不知道*
即将到来。
答案 0 :(得分:10)
您可以将多个分隔符与strtok
一起使用,第二个参数是包含 list 分隔符的C字符串,而不仅仅是一个分隔符:
#include <stdio.h>
#include <string.h>
int main (void) {
char myStr[] = "A,B,C*D";
char *pChr = strtok (myStr, ",*");
while (pChr != NULL) {
printf ("%s ", pChr);
pChr = strtok (NULL, ",*");
}
putchar ('\n');
return 0;
}
该代码的输出是:
A B C D