我有一个数组,需要用看起来像这样的字符串中的值填充:
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]);
请注意,定界符“;”被覆盖,如果您按指定保留它,则必须将其添加到字符串的末尾,这很奇怪,可能不是您真正想要的。