我有一个像“100000”这样的数字的文件有没有办法将每个数字存储在数组中?例如,我创建一个数组[100],我想要数组[0] = 1,数组[1] = 0,数组[2] = 0等等。我查了一下但是从我收集到的,如果我使用了char数组它将它作为一个整体。
答案 0 :(得分:1)
我可能不会使用fscanf()
:
while ((c = fgetc(fp)) != EOF && isdigit(c))
array[i++] = c - '0';
如果您必须使用fscanf()
,那么:
int i = 0;
int v;
while (fscanf(fp, "%1d", &v) == 1)
{
assert(v >= 0 && v <= 9);
array[i++] = v;
}
格式字符串中的1将整数限制为一位数。如果您使用int *
,则必须传入%1d
。如果您的库中有C99支持,则可以使用:
int i = 0;
while (fscanf(fp, "%1hhd", &array[i++]) == 1)
;
hh
长度修饰符表示指针是指向char(非常短的整数)的指针,而不是指向int
的指针。
答案 1 :(得分:0)
这个数字是存储为文字“100000”还是二进制表示?如果它是文字'100000',只需将其读入一个字符串,这已经是一个字符数组。
答案 2 :(得分:0)
当您使用fscanf将输入读入char数组时,您可以迭代该数组并将atoi应用于每个元素并将输出(整数)放入int数组中。