使用fscanf读取文件的每一行

时间:2019-06-09 17:57:07

标签: c scanf dat-protocol

我正在尝试读取.dat文件的每一行并将其存储为浮点数。我正在使用fscanf。我的目标是将这些行存储到抽奖后。

var rec = function rec(a) {
        console.log('f', a);
        if (a == 0) return 1;
        return rec(a - 1) * a;
    };
    f = rec;

rec = function(a) {
    console.log('rec', a);
    return a + 1;
}

console.log(f(10));

.dat文件:

#include <stdio.h>

int main(void)
{
    char url[]="PREMIOS.dat", nome[20];
    float premio[12];
    FILE *arq;

    arq = fopen(url, "r");
    if (arq == NULL) {
        printf("Error\n");
    } else {
        for(i = 0; i < 12; i++) {
            while((fscanf(arq, "%f\n", &premio[i])) != EOF)
                printf("%.2f\n", premio[i]);
        }
    }
    fclose(arq);
    return 0;
}

由于某些原因,此代码无法存储数字。我该如何读取这些数字作为浮动,存储以及之后的抽奖?

1 个答案:

答案 0 :(得分:0)

while (fscanf(arq, "%f\n", &premio[i])) != EOF )
       printf("%.2f\n", premio[i]);

将继续逐行读取文件,直到文件结尾。在这种情况下,每次premio的索引0处的值都只会被覆盖。

相反,您应该尝试以下方法,

If ((fscanf(arq, "%f\n", &premio[i])) != EOF )
       printf("%.2f\n", premio[i]);