如何访问从strtok返回的令牌中索引的特定元素

问题描述 投票:0回答:1
int index = 0;
for (char *tp = strtok(strings, " "); tp != NULL; tp = strtok(NULL, " \t\n")){
}

假设 strings[] 类似于“今天很好”,第一个令牌返回将是“今天”,对吧?但 strtok() 不是返回一个“指针”吗?

那么如果我想循环“今天”这个词来打印每个字母,我该怎么做呢?我可以只做 tp[index] 吗?

c strtok
1个回答
1
投票

您可能想要这个:

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 学习材料中有关字符串的章节。

© www.soinside.com 2019 - 2024. All rights reserved.