C将字符串拆分为字符串数组

标签 c arrays strtok

我正在尝试制作一个方法,它接受一个字符串和一个数组,并使用 strtok() 将字符串拆分为字符串数组。我假设给定的数组有足够的空间,并且当数组中有空间时进行拆分。我认为这几乎是正确的,我只需要最后一次推送 :) 这是我的代码 atm:

string_to_stringarray(char* string, char** array) {

    int i = 0;
    array[i] = strtok(string, " ");

    while (array != NULL) {
        array[i++] = strtok(NULL, " ");
    }
}

最佳答案

while 条件没有意义。 array 的值在函数中不会改变,所以循环是无限的(除非 array 从一开始就为 NULL,在这种情况下对 array[0] 的第一个赋值会导致未定义的行为)。

应该是这样的:

size_t split_string(char *string, char **array) {
  size_t i = 0;

  char *token = strtok(string, " ");
  while (token != NULL)
  {
    array[i++] = token;
    token = strtok(NULL, " ");
  }
  return i;
}

这将返回找到的字符串数,并更改名称,因为用户代码无法定义以 str 开头的函数。

关于C将字符串拆分为字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35341985/

相关文章:

c - 如何使用 strtok()

c - 从C语言的文本文件中读取数据?

C++ 二维阵列乒乓球板

c - ruby的rb_raise如何停止调用它的c函数的执行?

c - 如何使用 printf 打印 unicode 代码点

php - 获取内部数组键的数组值

c - 将函数中的 token (strtok)存储在主数组中

c - 如何从 C 编写的源文件构建可执行文件?

PHP5.6 CLASS常量中允许数组

arrays - MongoDB 查询 $in 与元素的正则表达式数组