从.dat文件中读取数字,并将数字按列排列到C中的数组中

从.dat文件中读取数字,并将数字按列排列到C中的数组中,c,arrays,file-read,C,Arrays,File Read,数字按行排列。所以我的C程序被卡在了第一个循环中。 我该如何分类?如何确保它转到下一行?问题与安排无关;您正在尝试将浮点读入整数变量。程序中声明的i在哪里 将i设置为0 3.712e+05 4.265e+05 5.345e+05 .... 该文件包含浮动类型数据。 所以你的数组应该是 int i = 0; 那就做吧 float block[100]; 根据您正在读取的值,您可以使用double或long double类型声明数组。数字是如何存储在文件中的?我的意思是,它是文本文件还是二进制

数字按行排列。所以我的C程序被卡在了第一个循环中。
我该如何分类?如何确保它转到下一行?

问题与安排无关;您正在尝试将浮点读入整数变量。

程序中声明的
i
在哪里

将i设置为0

3.712e+05
4.265e+05
5.345e+05
....
该文件包含浮动类型数据。 所以你的数组应该是

int i = 0;
那就做吧

float block[100];

根据您正在读取的值,您可以使用
double
long double
类型声明数组。

数字是如何存储在文件中的?我的意思是,它是文本文件还是二进制文件?重点是:mMATLAB写入文件的数字是指数形式的,即使它是int类型的。我不知道这需要我以浮点形式读取它。通过告诉
fscanf
读取int(%d),你告诉它查找int(并且它不认为指数形式是int),通过告诉它寻找一个浮点数(%f),它将按原样读取值。如果以后要将其存储在
int
变量中,请使用它。谢谢Gopi。但是如果我声明我的fscanf读取%d个值,那么它是否应该将浮点实数截断为最接近的整数?为什么它根本不读取该文件?
float block[100];
while((fscanf(fp,"%f",&block[i++])) != EOF);