用C中的多个分隔符解析

P B*_*P B 4 c string parsing delimiter

在C中,解析具有多个分隔符的字符串的最佳方法是什么?假设我有一个字符串,A,B,C*D并希望存储ABC D的这些值.我不知道如何处理*优雅,除了存储最后一个字符串C*D,然后用*分隔符分别解析.

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

pax*_*blo 10

您可以使用多个分隔符strtok,第二个参数是带有分隔符列表的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;
}
Run Code Online (Sandbox Code Playgroud)

该代码的输出是:

A B C D
Run Code Online (Sandbox Code Playgroud)