4

スペースとタブで文字列を分割しようとしています。

char * token = strtok(input, " \t");

スペースに対してのみ機能します。私は何を間違っていますか?

4

1 に答える 1

11

strtok() がタブまたはスペースで機能することを示す例を次に示します。重要なのは、strtok() の最初の呼び出しを除くすべての呼び出しで NULL を渡すことです。

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
    char buffer[1024];
    int rv = sprintf(buffer, "a string\ttokenize.");
    char *token = strtok(buffer, " \t");
    int i = 0;
    printf("cnt  token\n");
    printf("==========\n");
    while (token) {
        printf("%2d %s\n", i++, token);
        token = strtok(NULL, " \t");
    }
    return 0;
}

上記のプログラムからの出力は次のとおりです。

cnt  token
==========
 0 a
 1 string
 2 tokenize.
于 2013-11-06T03:36:15.417 に答える