strtok没有按预期工作,没有拆分字符串

时间:2015-01-28 22:22:40

标签: c string char strtok

我正在尝试访问字符串'a 3'的'3'部分,该字符串存储在my_str中,这是一个指向字符串的char指针。我很难进入3部分。当我打印my_str时,我按预期得到“3”。如何使用strtok移动到'3'字符?

if(*my_str=='a'){
        puts("appends case");
        my_str = strtok(my_str, " ");
        my_str = strtok(my_str, " ");
        printf("line number: %s\n", my_str);
        my_str = strtok(my_str, " ");
        printf("line number2: %s", my_str);
}

1 个答案:

答案 0 :(得分:1)

因为对strtok()的第二次和所有后续调用都要求第一个参数为NULL

if (*my_str == 'a') {
    puts("appends case");

    my_str = strtok(my_str, " ");

    my_str = strtok(NULL, " ");
    if (my_str != NULL)
        printf("line number: %s\n", my_str);

    my_str = strtok(NULL, " ");
    if (my_str != NULL)
        printf("line number2: %s", my_str);
}

您还应检查strtok()的返回值是否为NULL,因为如果在字符串中找不到令牌,则会返回NULL,并取消引用{{1指针是未定义的行为。