c - 加载按分隔符分隔的字符串到数组

标签 c arrays delimiter

我有一个数组,需要用如下所示的字符串中的值填充:

value0;value1;value2;value3;\n

我尝试使用 strtok() 但无法真正弄清楚如何正确地将 2 个以上的元素加载到表中。

所需的输出类似于

arrayValues[0] = value0;
arrayValues[1] = value1;

等等

最佳答案

您需要使用 strtok() 和 realloc()。两者都有点难以使用

char input[] = "value0;value1;value2;value3\n";
char **arrayValues = NULL;
int N = 0;
char *token = strtok(input, ";");

while(token != 0)
{
   N++;
   arrayValues = realloc(arrayValues, N * sizeof(char *));
   if(!arrayValues)
      /* out of memory - very unlikely to happen */
   arrayValues[N-1] = strdup(token);
   token = strtok(NULL, ";");
}

/* print out to check */
for(i=0;i<N;i++)
  printf("***%s***\n", arrayValues[i]);

请注意分隔符“;”被覆盖,如果您按照指定保留它,则必须将其添加到字符串的末尾,这很繁琐,而且可能不是您真正想要的。

关于c - 加载按分隔符分隔的字符串到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48488927/

相关文章:

C 中的字符表示

Javascript 在多个定界符处拆分,同时保留定界符

c - struct 中间的可变长度数组 - 为什么此 C 代码对 gcc 有效

java - 功能的大O表示法

c++ - C/C++中如何更 pretty-print 调用栈?

python - MATLAB 到 Python 转换数组

string - 在批处理文件中最后一个分隔符实例之后提取字符串

regex - 不知道如何正确使用环视来实现我的正则表达式匹配

c - 浮点值输入错误

c - 为什么不能在数组中分配多个字符?