0

C言語でプログラムを書いてから長い時間が経ちましたが、以下のような文字列があります

"VRUWFB02=I.V.R, W.F.B, plan 2, VRUWFB01=I.V.R, W.F.B, plan 1, assa=784617896.9649164, plan24, massmedua=plan12, masspedia=IVR, masojh, jhsfdkl, oijhojomn, oiafofvj, plan"

「=」の前のもの、つまり VRUWFB02、VRUWFB01、assa、massmedua、masspedia を取得する必要があります。

文字列を分割することはできますが、それらの特定の単語を抽出することはできません。

誰でもこれで私を助けることができますか

char st[] = "VRUWFB02=I.V.R, W.F.B, plan 2, VRUWFB01=I.V.R, W.F.B, plan 1,assa=784617896.9649164, plan24, massmedua=plan12, masspedia=IVR, masojh, jhsfdkl, oijhojomn, oiafofvj, plan";
char *ch;
regex_t compiled;
char pattern[80] = "  ";
printf("Split \"%s\"\n", st);
ch = strtok(st, " ");
while (ch != NULL) {
    if(regcomp(&compiled, pattern, REG_NOSUB) == 0) {
        printf("%s\n", ch);
    }
    ch = strtok(NULL, " ,");
}
return 0;
4

2 に答える 2

2

これは、物事を説明するために作成した簡単なサンプルプログラムです。

#include <string.h>
#include <stdio.h>

int main(void)
{
    char s[] = "VRUWFB02=I.V.R, W.F.B, plan 2, VRUWFB01=I.V.R, W.F.B, "
               "plan 1, assa=784617896.9649164, plan24, massmedua=plan12, "
               "masspedia=IVR, masojh, jhsfdkl, oijhojomn, oiafofvj, plan";
    char *p;
    char *q;

    p = strtok(s, " ");
    while (p)
    {
        q = strchr(p, '=');
        if (q)
            printf("%.*s\n", (int)(q - p), p);
        p = strtok(NULL, " ");
    }

    return 0;
}

そして出力:

$ ./example
VRUWFB02
VRUWFB01
assa
massmedua
masspedia

=基本的な考え方は、文字列をスペースで分割し、チャンク内の文字を探すことです。表示された場合は、そのチャンクの目的の部分を印刷します。

于 2013-07-25T20:36:48.700 に答える
0

strtok関数を使用して文字列を分割できます。参考にしたウェブページで使用例を見つけることができます。

于 2013-07-25T20:27:53.480 に答える