有人可以告诉我我要在哪里出错吗?基本上我写了一些应该从文件中获取值的代码,然后从文件中输出第一个值作为输出以及文件中的值的数量。未从输入文件中打印正确的值
尽管我获得了正确数量的值,但我输出的第一个值与我的文件中的第一个值不同。这里是代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
const char Project_Data[] = "filedata.dat";
FILE *input = fopen(Project_Data, "r");
int t = 0;
int N = 0;
float *a;
a = (float*)malloc(N*sizeof(float));
if(input != (FILE*) NULL)
{
while(fscanf(input, "%e", &a[t]) == 1)
{
N++;
if(a[t] == EOF)
break;
}
printf("first value in file: %e\n",a[0]);
printf("number of values in file: %d\n", N);
}
else
printf("coudlnt read input file.\n");
return(0);
}
我觉得它有一些关于我如何使用malloc函数。如果是这样,我该如何正确使用它?我想从文件中读取我的值到数组大小N,但是如果我事先不知道N的值,该怎么办?
编辑:
下面是一些从文件中的值。这些值依次排列,它们之间有一个空格。因为值的数量非常大,所以它们在页面上形成了几个对角线(如果以前是这样的话)。
9.0100000e+00 8.9663752e-01
9.0200000e+00 1.5041077e+00
9.0300000e+00 2.5992505e+00
9.0400000e+00 1.5242828e+00
9.0500000e+00 3.6815660e-01
9.0600000e+00 5.4889676e-01
9.0700000e+00 1.2371257e+00
9.0800000e+00 1.2163317e+00
9.0900000e+00 5.4318479e-01
9.1000000e+00 1.5906641e+00
9.1100000e+00 2.6775285e+00
9.1200000e+00 1.1608307e+00
9.1300000e+00 1.2084299e+00
9.1400000e+00 -7.8752191e-01
9.1500000e+00 6.4048690e-01
9.1600000e+00 2.2727416e-02
9.1700000e+00 1.0307653e+00
9.1800000e+00 1.9435864e+00
9.1900000e+00 2.9422693e+00
9.2000000e+00 3.2184945e+00
9.2100000e+00 1.3041157e+00
9.2200000e+00 1.1018038e+00
左边的值不是订单;他们是真正的价值观,只是其他数据意味着数据中的“噪音”。
你可以发布输入文件 - 至少是它的一部分吗? – user93353
当然是 - 我现在编辑我的帖子 – user1988898
'a [t] == EOF'?!? (是的,EOF是一个'int',但我非常怀疑你想要这个...... – vonbrand