Parsing with multiple delimiters, in C

喜欢而已 提交于 2019-12-01 20:56:06

问题


In C, what is the best way to parse a string with multiple delimiters? Say I have a string A,B,C*D and want to store these values of A B C D. I'm not sure how to deal with the * elegantly, other than to store the last string C*D and then parse that separately with a * delimiter.

If it was just A,B,C,*D I'd use strtok() and ignore the first index of the *D to get just D, but there is no comma before the * so I don't know that * is coming.


回答1:


You can use multiple delimiters with strtok, the second argument is a C string with the list of delimiters in it, not just a single delimiter:

#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;
}

The output of that code is:

A B C D


来源:https://stackoverflow.com/questions/27791179/parsing-with-multiple-delimiters-in-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!