Кривая работа цикла while - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Привет други. Проблема с 2 циклами while вот код
#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 на подсчет кол-во символов в файле выдает на 1 больше а второй на вывод массива пишет всякую лабуду. Но стоит за комментировать один из циклов они работают корректно. Не могу понять в чем проблема.Подскажите.

Решение задачи: «Кривая работа цикла while»

textual
Листинг программы
while (fscanf(f,"%d",&c) == 1)
{
  A[i]=c;
  i++;
}

Объяснение кода листинга программы

В данном коде выполняется чтение чисел из файла и их запись в массив. Ниже представлена последовательность выполнения:

  1. В условии цикла while используется функция fscanf для чтения числа из файла.
  2. Если функция fscanf вернула 1, то число успешно прочитано, и оно присваивается переменной c.
  3. Значение переменной c затем присваивается элементу массива A с индексом i.
  4. Индекс i затем увеличивается на 1.
  5. Цикл продолжается до тех пор, пока функция fscanf не вернет 0, что означает, что достигли конца файла или было пропущено число.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5