Кривая работа цикла while - C (СИ)
Формулировка задачи:
Привет други.
Проблема с 2 циклами while вот код
Проблема в том что вместе они в одном коде они работают не корректно.
Первый цикл while на подсчет кол-во символов в файле выдает на 1 больше
а второй на вывод массива пишет всякую лабуду.
Но стоит за комментировать один из циклов они работают корректно.
Не могу понять в чем проблема.Подскажите.
Листинг программы
- #include <stdlib.h>
- int main(int argc, char *argv[]) {
- FILE *f;
- f = fopen("input.txt", "r");
- int i = 0, c,j;
- int A[3];
- while (!feof(f))
- {
- fscanf(f,"%d",&c);
- j++;
- }
- while (!feof(f))
- {
- fscanf(f,"%d",&c);
- A[i]=c;
- i++;
- }
- printf("All Symblos:\n");
- printf("%d", j);
- printf("\n");
- printf("Output Massiv: \n");
- for(i=0;i< j;i++) // цикл до j-кол-во символов
- {
- printf("%d", A[i]);
- printf("\n");
- }
- fclose(f);
- return 0;
- }
Решение задачи: «Кривая работа цикла while»
textual
Листинг программы
- while (fscanf(f,"%d",&c) == 1)
- {
- A[i]=c;
- i++;
- }
Объяснение кода листинга программы
В данном коде выполняется чтение чисел из файла и их запись в массив. Ниже представлена последовательность выполнения:
- В условии цикла while используется функция fscanf для чтения числа из файла.
- Если функция fscanf вернула 1, то число успешно прочитано, и оно присваивается переменной c.
- Значение переменной c затем присваивается элементу массива A с индексом i.
- Индекс i затем увеличивается на 1.
- Цикл продолжается до тех пор, пока функция fscanf не вернет 0, что означает, что достигли конца файла или было пропущено число.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д