fscanf число и сохранить каждое число в массиве c - PullRequest
0 голосов
/ 25 апреля 2011

У меня есть файл с номером, например, «100000». Есть ли способ сохранить каждое число в массиве?Например, я делаю массив [100], и я хочу массив [0] = 1, массив [1] = 0, массив [2] = 0 и т. Д. Я искал это, но из того, что я собираю, если я используюмассив символов, он принимает его целиком.

Ответы [ 3 ]

1 голос
/ 25 апреля 2011

Я, вероятно, не использовал бы 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 указывает, что указатель является указателем на символ (очень короткое целое), а не указателем на int.

0 голосов
/ 25 апреля 2011

Поскольку вы используете fscanf для чтения ввода в массив символов, вы можете выполнять итерацию по этому массиву и применять atoi к каждому элементу и помещать вывод (целое число) в массив int.

0 голосов
/ 25 апреля 2011

Хранится ли число как литерал '100000' или как его двоичное представление?если это литерал «100000», просто прочитайте его в строку, которая уже является массивом символов.

...