int index = 0;
for (char *tp = strtok(strings, " "); tp != NULL; tp = strtok(NULL, " \t\n")){
}
假设 strings[] 类似于“今天很好”,第一个令牌返回将是“今天”,对吧?但 strtok() 不是返回一个“指针”吗?
那么如果我想循环“今天”这个词来打印每个字母,我该怎么做呢?我可以只做 tp[index] 吗?
您可能想要这个:
int main(void)
{
char strings[] = "Today is nice";
for (char* tp = strtok(strings, " "); tp != NULL; tp = strtok(NULL, " \t\n"))
{
printf("\"%s\" ", tp);
}
}
是的
strtok()
返回一个指针。第一次调用 strtok(somestring, ...)
返回指向第一个子字符串的指针,随后对 strtok(NULL, ...
的调用返回下一个子字符串。
如果您想采用困难的方式(按照您建议的方式),您可以这样做:
for (char* tp = strtok(strings, " "); tp != NULL; tp = strtok(NULL, " \t\n"))
{
char ch;
for (int i = 0; ch = tp[i]; i++)
printf("%c", ch);
printf(" ");
}
我建议你再读一遍 C 学习材料中有关字符串的章节。