fscanf一个数字并将每个数字存储在数组c中

时间:2011-04-25 16:46:54

标签: c arrays char int scanf

我有一个像“100000”这样的数字的文件有没有办法将每个数字存储在数组中?例如,我创建一个数组[100],我想要数组[0] = 1,数组[1] = 0,数组[2] = 0等等。我查了一下但是从我收集到的,如果我使用了char数组它将它作为一个整体。

3 个答案:

答案 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数组中。