C使用strtok()将字符串拆分为字符串数组,而没有NULL作为最后一个元素

问题描述 投票:0回答:1

我有这样的字符串:

"monday,wednesday,friday"

而且我想将其保存到char数组(〜字符串数组)中。

char **splitString(char *string, int size, char delimiter)
{
  char **ptr = (char **)malloc(size * sizeof(char *));
  int i = 0;
  ptr[i] = strtok(string, &delimiter);
  while (ptr[i] != NULL)
  {
    ptr[++i] = strtok(NULL, &delimiter);
  }
  return ptr;
}

可以通过上面的代码来做到这一点,但是由于它总是检查当前标记化的字符串,因此它不会随着最后一个字符串而停止并读取附加的NULL。打印出我得到的数组:

The 0. element is: monday
The 1. element is: wednesday
The 2. element is: friday
The 3. element is: (null)

是否有一种简洁明了的方法来知道循环何时到达最后一个元素?

c arrays split strtok
1个回答
0
投票

使用类似的东西

char **splitString(char *string, int size, char delimiter)
{
  char **ptr = (char **)malloc(size * sizeof(char *));
  char *p;
  int i = 0;
  p = strtok(string, &delimiter);
  while (p != NULL)
  {
    ptr[i++] = p;
    p = strtok(NULL, &delimiter);
  }
  return ptr;
}
© www.soinside.com 2019 - 2024. All rights reserved.