【问题标题】:Storing decimal numbers from a text file to an array in C将文本文件中的十进制数字存储到C中的数组中
【发布时间】:2018-12-08 08:42:07
【问题描述】:

我正在尝试将文本文件中的 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

如果我留下了一些关于我的担忧的关键信息,请询问。谢谢

【问题讨论】:

  • 你能用少于 101 个数字重现这个问题吗?如果是这样,用什么数字?将它们包含在问题本身中,使其成为minimal reproducible example
  • 我修改了@JohnColeman 的问题,是的,使用较短的值列表仍然会出现问题

标签: c arrays file storing-data


【解决方案1】:

很简单的问题

您正确存储了这些值。错误出现在您的打印周期中。 您将i 增加两次。请从第二个周期中删除i++;

我测试过,效果很好

【讨论】:

  • 你是对的。感谢您的宝贵时间,对新手的错误表示歉意
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多