在C中以不同的精度从文件中读取浮点值
如果我有一个包含浮点数行的文件,如下所示:在C中以不同的精度从文件中读取浮点值,c,file,C,File,如果我有一个包含浮点数行的文件,如下所示: 4.5 -3.2 3.3 5.62 0.56 3.231 5.632 -4.56 2 5.8212 4 6.7 如何逐行读取并拆分数字以保存在数组中(它们由一个制表器分隔) 多谢各位 编辑: 我做了以下工作,它的工作,谢谢大家的帮助 #include <stdio.h> #include <stdlib.h> int main(){ float array[2][6]; FILE *f; f=fopen
4.5 -3.2 3.3 5.62 0.56 3.231
5.632 -4.56 2 5.8212 4 6.7
如何逐行读取并拆分数字以保存在数组中(它们由一个制表器分隔)
多谢各位
编辑:
我做了以下工作,它的工作,谢谢大家的帮助
#include <stdio.h>
#include <stdlib.h>
int main(){
float array[2][6];
FILE *f;
f=fopen("input.txt", "r");
int i = 0;
int j = 0;
for(i=0; i<2; i++){
for(j=0;j<6;j++){
fscanf(f,"%f",&array[i][j]);
}
}
for(i=0; i<2; i++){
for(j=0;j<6;j++){
printf("%f ", array[i][j]);
}
}
}
#包括
#包括
int main(){
浮点数组[2][6];
文件*f;
f=fopen(“input.txt”,“r”);
int i=0;
int j=0;
对于(i=0;i使用go以字符串形式获取文件的一行。而不是使用来将浮点值解析为变量。有很多方法可以做到这一点。如果您可以依靠输入按您描述的格式进行格式化,那么scanf()
可能是完成这项工作最简单的方法。每个数字的格式细节各不相同这一事实并不是什么障碍。例如:
float array[2][6];
for (int i = 0; i < 2; i += 1) {
int result = scanf("%f%f%f%f%f%f", &array[i][0], &array[i][1], &array[i][2],
&array[i][3], &array[i][4], &array[i][5]);
if (result < 6) {
/* handle error or EOF or malformed input */
}
}
float数组[2][6];
对于(int i=0;i<2;i+=1){
int result=scanf(“%f%f%f%f%f%f”、&array[i][0]、&array[i][1]、&array[i][2],
&数组[i][3]、&数组[i][4]、&数组[i][5];
如果(结果<6){
/*处理错误或EOF或格式错误的输入*/
}
}
scanf()
如果在成功匹配任何字段之前到达文件结尾,则会发生错误。是否可以依靠每行恰好有六个数字,如示例中所示?使用fgets()
读取每行,strtok()
以空格分隔,以及atof()
将每个字符串转换为浮点。您是想将所有行中的所有数字存储在一个长的1D数组中?还是想填充一个2D数组?或者可能会用每行覆盖上一行中的值?是的@JohnBollinger每行都有相同数量的数字谢谢@Barmar我会看一看