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

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

假设

strings[]
类似于
"Today is nice,"
第一个代币回报将是
"Today"
对吧?但是
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.