Хранение десятичных чисел из текстового файла в массив в C - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь сохранить 10 десятичных чисел из текстового файла в массив.Моя проблема в том, что он пропускает несколько чисел, пока не достигнет конца строки.

Я отладил программу, распечатав количество циклов, которые программа выполнила для достижения конца файла, и вывел 10. Иэто правильное значение количества чисел в файле.Но когда я отображаю значения элементов массива, там только 5 чисел.Когда я сравниваю сохраненные номера с номерами текстовых файлов, получается, что несколько номеров пропускаются.

Вот мой код ниже:

#include <stdio.h>
#include <stdlib.h>

main(void) 
{
   FILE *inp;         /* pointer to input file */

   double item;
   int cnt=0,y,d,i;
   double array[300],swap;  

   /* Prepare files for input */
   inp = fopen("C:/Users/infile.txt", "r");


   /* Read each item */
   while ( (fscanf(inp, "%lf", &item) == 1) && (!feof(inp)) ) {
     array[cnt] = item;
     cnt++; 
   }


   for (int i = 0; i < cnt; i++)
   {
      printf("%lf\n",array[i]);
      i++;
   }
   printf("%d",cnt);


  fclose(inp); /* Close the files */

  return (0);
}

-В текстовом файле есть 10 двойных чисел в диапазоне от 0 до 101 (например, 15.12563)

-Значение длявремя цикла цикла while равно 10 (cnt достигает 10)

- Мой код хранит только 5 чисел вместо 10, что пропускает остальные 5 чисел, но говорит, что оно достигло последнего значения в строке10.

Это значения в текстовом файле:

21.388000

12.372628

21.961366

85.616285

30.123001

30.271053

70.733982

35.867327

48.339462

82.459009

Если я оставлю некоторую ключевую информацию омоя проблема, пожалуйста, спросите.Спасибо

1 Ответ

0 голосов
/ 08 декабря 2018

Это очень простая проблема

Вы правильно храните значения.Ошибка в вашем цикле печати.Вы увеличиваете i в два раза.Пожалуйста, удалите i++; из второго цикла.

Я проверил его, и он хорошо работает

...