用C中的多个分隔符解析

时间:2015-01-06 02:24:57

标签: c string parsing delimiter

在C中,解析具有多个分隔符的字符串的最佳方法是什么?假设我有一个字符串A,B,C*D并希望存储ABC D的这些值。我不确定如何优雅地处理*,而不是存储最后一个字符串{{1}然后使用C*D分隔符单独解析它。

如果只是*我使用strtok()并忽略A,B,C,*D的第一个索引来获得D,但*D之前没有逗号所以我不知道*即将到来。

1 个答案:

答案 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