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
指针是未定义的行为。
我正在尝试访问存储在 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
指针是未定义的行为。