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

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

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

Привет други. Проблема с 2 циклами while вот код
Листинг программы
  1. #include <stdlib.h>
  2. int main(int argc, char *argv[]) {
  3. FILE *f;
  4. f = fopen("input.txt", "r");
  5. int i = 0, c,j;
  6. int A[3];
  7. while (!feof(f))
  8. {
  9. fscanf(f,"%d",&c);
  10. j++;
  11. }
  12. while (!feof(f))
  13. {
  14. fscanf(f,"%d",&c);
  15. A[i]=c;
  16. i++;
  17. }
  18. printf("All Symblos:\n");
  19. printf("%d", j);
  20. printf("\n");
  21. printf("Output Massiv: \n");
  22. for(i=0;i< j;i++) // цикл до j-кол-во символов
  23. {
  24. printf("%d", A[i]);
  25. printf("\n");
  26. }
  27. fclose(f);
  28. return 0;
  29. }
Проблема в том что вместе они в одном коде они работают не корректно. Первый цикл while на подсчет кол-во символов в файле выдает на 1 больше а второй на вывод массива пишет всякую лабуду. Но стоит за комментировать один из циклов они работают корректно. Не могу понять в чем проблема.Подскажите.

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

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

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

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут