我有一个数组,需要用看起来像这样的字符串中的值填充:

value0;value1;value2;value3;\n


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

理想的输出类似于

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]);


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

07-24 19:52