Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.3k views
in Technique[技术] by (71.8m points)

string - Parsing with multiple delimiters, in C

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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 ('
');

    return 0;
}

The output of that code is:

A B C D

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...