【发布时间】:2016-10-12 05:05:47
【问题描述】:
我一直在尝试读取包含以下内容的文本文件:
0.000 1.800 3.240 4.374 5.249 5.905 6.377 7.696 6.887 6.974 6.974 6.904 6.778 6.609 6.406 6.177 5.930 5.670 5.403 5.133 4.863 4.596 4.333 5.077 3.829 4.589 3.360 3.140 2.931 2.732 2.543 2.365 2.198 2.040 1.891 1.752 1.622 1.500 1.387 1.281 1.182 1.091 2.006 0.927 0.853 0.786 0.723 0.665 0.611 0.561 0.515 0.473 0.434 0.398 0.365 0.335 0.307 0.281 0.257 0.236 0.216 1.197 0.180 0.165 0.151 0.138 0.126 0.115 0.105 0.096 0.088 0.080 0.073 0.067 0.061 1.055 0.051 0.046 0.042 0.038 0.035 0.032 0.029 0.026 0.024 0.022 0.020 0.018 0.017 0.015 0.014 0.012 0.011 0.010 0.009 0.009 0.008 0.007 1.006 0.006 0.005 0.005
这些数字在文本文件中的格式如上。
我的代码如下
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *file = fopen("Data.txt", "r");
float integers[102];
int i=0;
int num;
while(fscanf(file, "%f", &num) >0) {
integers[i] = num;
i++;
}
if( file == NULL )
{
printf("Error while opening the file.\n");
}
fclose(file);
for(i = 0;i <102; i++){
printf("integers[%d] = %f",i, integers[i]);
}
}
printf 的输出是整数中的所有元素在运行时都为零。此外,在尝试调试时,我注意到编译器跳过了 while 循环。我正在使用 Code Composer Studios。
【问题讨论】:
-
为什么将浮点数数组称为“整数”?为什么将读取的整数保存在
int,而不是float?为什么很晚才查看null? -
开始测试
fopen是否返回NULL,如果是,则打印错误消息,不要继续。 -
@Zeta 代码不是原创的,我不得不修改它以使其读取浮动。变量来自原始变量,没有更改。
-
@Zeta 我也想看看 while 循环是否读取了文件,所以我现在才注意到为什么你说得很晚。
-
您在尝试读取文件后显示“无法打开文件”错误消息。这不是你应该做的。