我一直在尝试读取具有以下内容的文本文件:
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。
这种方法作为一个例子:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE * fp;
float fval[102];
int n, i;
fp = fopen("foo.txt", "w+");
if (fp == NULL) {
printf("failed to open file\n");
return 1;
}
fputs("0.000 1.800 3.240 4.374 5.249 5.905 6.377 7.696 ", fp);
rewind(fp);
n = 0;
while (fscanf(fp, "%f", &fval[n++]) != EOF)
;
/* n-1 float values were successfully read */
for (i=0; i<n-1; i++)
printf("fval[%d]=%f\n", i, fval[i]);
fclose(fp);
return 0;
}
我得到以下输出:
fval[0]=0.000000
fval[1]=1.800000
fval[2]=3.240000
fval[3]=4.374000
fval[4]=5.249000
fval[5]=5.905000
fval[6]=6.377000
fval[7]=7.696000
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句