在C中以不同的精度从文件中读取浮点数

时间:2016-02-03 22:29:47

标签: c file

如果我的文件包含浮点数这样的行:

4.5 -3.2 3.3 5.62 0.56 3.231
5.632 -4.56 2 5.8212 4 6.7

如何逐行读取并拆分数字以将它们保存在数组中(它们由1个制表符分隔)。

谢谢

编辑:

我做了以下工作,感谢大家的帮助

#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]);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

使用fgets以字符串形式获取文件的一行。比使用sscanf将float解析为变量。

答案 1 :(得分:0)

有很多方法可以做到这一点。如果您可以依赖于您描述的格式化输入,那么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 */
    }
}

scanf()会在大多数字段类型之前自动忽略前导空格(包括换行符),并在空白处打破大多数类型的字段。它返回成功扫描和分配的字段数,或EOF if 发生错误或在任何字段成功匹配之前到达文件末尾。