在 C 中使用多个定界符进行解析

Parsing with multiple delimiters, in C

在 C 中,解析具有多个定界符的字符串的最佳方法是什么?假设我有一个字符串 A,B,C*D 并想存储 A B C D 的这些值。除了存储最后一个字符串 C*D 和然后用 * 分隔符单独解析。

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

您可以使用 多个 分隔符和 strtok,第二个参数是一个 C 字符串,其中包含 list 个分隔符它,不仅仅是一个分隔符:

#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