6

を使用して文字列を解析しようとしていましたstrtok()。セミコロン ( ; ) で区切られた文字列を解析しようとしています。しかし、セミコロンなしの文字列を に入力すると、文字列strtok()全体が返されます。NULLトークンの一致がない場合は返されるべきではありませんか?

これは私のコードです:

int main(int argc, char** argv) 
{
    char cmd[] = "INSERT A->B B->C INSERT C->D";
    char delim[] = ";";
    char *result = NULL;

    result = strtok(cmd,delim);

    if(result == NULL)
    {
        printf("\n NO TOKENS\n");
    }
    else
    {

        printf("\nWe got something !! %s ",result);

    }

    return (EXIT_SUCCESS);
}

出力は次のとおりです。A->B を挿入 B->C を挿入 C->D を挿入

4

2 に答える 2

9

いいえ、区切り文字はトークンを区切るものであることを意味するため、区切り文字がない場合、文字列全体が最初のトークンと見なされます

トークンが 2 つある場合は、それらのトークンの 1 つを取り除きます。あなたが持っている場合

a;b

次に、トークンaとbがあります

今、あなたがb奪うなら...

a

あなたはまだトークンを持っていますa

于 2012-11-29T20:00:21.897 に答える