我正在尝试访问字符串'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);
}
答案 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指针是未定义的行为。