C中的嵌套strtok函数问题

我有一个像这样的字符串:


a;b;c;d;e

f;g;h;i;j

1;2;3;4;5

我想逐个元素解析它。我使用了嵌套的strtok函数,但是它只是分割第一行并使标记指针为null。我该如何克服呢?这是代码:


token = strtok(str, "\n");


while(token != NULL && *token != EOF)

{

    char a[128], b[128];

    strcpy(a,token);

    strcpy(b,a);

    printf("a:%s\n",a);

    char *token2 = strtok(a,";");

    while(token2 != NULL)

    {

        printf("token2 %s\n",token2);

        token2 = strtok(NULL,";");

    }

    strcpy(token,b);

    token = strtok(NULL, "\n");

    if(token == NULL)

    {

        printf("its null");

    }

}

输出:


token 2 a

token 2 b

token 2 c

token 2 d

token 2 e


慕桂英546537
浏览 655回答 3
3回答

慕容森

曲折…… for循环本质上是在发现位置加写NUL'\ 0' strtok()的组合使用strchr()。它仅在创建和剖析该行的副本时才有效;否则,您将必须strlen(line)在循环的顶部进行调用并保存该长度,以将其添加到for循环控件第三部分的行中。
打开App,查看更多内容
随时随地看视频慕课网APP