我正在尝试将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
如果我留下了一些有关自己关注的关键信息,请询问。谢谢
答案 0 :(得分:2)
这是一个非常简单的问题
您正确存储了值。错误出现在您的打印周期中。
您将i
递增两次。请从第二个循环中删除i++;
。
我测试了它,并且效果很好