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

strtok not working as expected, not splitting string

我正在尝试访问存储在 my_str 中的字符串 'a 3' 的“3”部分,这是一个指向字符串的字符指针。我很难访问第 3 部分。当我打印 my_str 时,我得到了预期的 "a 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);
}

因为对 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() 中的 return 值是否不是 NULL,因为如果在字符串中找不到标记,则 NULL 是 returned,取消引用 NULL 指针是未定义的行为。