C 条件strtok()?

C 条件strtok()?,c,input,strtok,C,Input,Strtok,我试图使用strtok()将输入分成五个部分,每个部分用冒号分隔 ab:c:X:cf:b 但是,用户也可以选择不为输入的某些部分输入任何内容 f::V:pq: 有没有办法用strtok解释这个问题?这是我到目前为止的代码,但它没有按预期工作 piece = strtok(action_def, ":"); if (piece!=NULL) { execute } piece = str

我试图使用strtok()将输入分成五个部分,每个部分用冒号分隔

ab:c:X:cf:b
但是,用户也可以选择不为输入的某些部分输入任何内容

f::V:pq:
有没有办法用strtok解释这个问题?这是我到目前为止的代码,但它没有按预期工作

        piece = strtok(action_def, ":");
        if (piece!=NULL) {
            execute
        }
        piece = strtok(NULL, ":");
        if (piece!=NULL) {
            execute
        }
        piece = strtok(NULL, ":");
        action_list[action_n]->name = *piece;
        piece = strtok(NULL, ":");
        if (piece!=NULL) {
            execute
        }
        // last char recorded by fgets is '\n'
        piece = strtok(NULL, "\n");
        if (piece!=NULL) {
            execute
        }

这回答了你的问题吗?请不要在标题中添加C。有用于此目的的标记。只是不要使用strtok()。使用strspn()/strcspn()(或strchr())或只是在一个循环中行走。