我正在使用带有 -std=c89
开关的 Linux gcc 对 C 进行编程。我有一个存储字符串的变量,例如:
10, 1, 2, 3
我在上面的字符串中显示了 4 个整数,但事先并不知道真实的数字。如何将这些值提取到整数数组中?例如,我们可以使用 8 的上限来分配内存。但整数的实际数量将始终为 <= 8。
目前,我正在做以下事情:
sscanf(csv_variable, "%i,%i,%i,%i,%i,%i,%i,%i",
&int_variable[0],
&int_variable[1],
&int_variable[2],
&int_variable[3],
&int_variable[4],
&int_variable[5],
&int_variable[6],
&int_variable[7]);
但这适用于具有 8 个整数的输入字符串。希望以某种方式在循环内完成解析,以便它可以容纳任何数字,例如最多 8 个可能的整数(以便它适用于提供少于 8 个整数的情况)。
如果您想在循环中执行此操作,您可以使用 strtok
对字符串进行标记化
char *tok = strtok(csv_variable, ",");
int i = 0;
while(tok != NULL) {
int_variable[i] = atoi(tok);
i++;
tok = strtok(NULL, ",");
}
我是一名优秀的程序员,十分优秀!