Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中以不同的精度从文件中读取浮点值_C_File - Fatal编程技术网

在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我会看一看