分享
为什么问答平台  ›  专栏  ›  技术社区  ›  Jackgba

使用fscanf读取文件的每一行 - Read each line of a file using fscanf

  •  0
  • Jackgba  · 技术社区  · 1 周前

    我试图读取.dat文件的每一行并将其存储在一个浮点数中。我用的是fscanf。我的目标是在我抽完奖券后把这些台词存起来。

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

    .dat文件:

    100.00
    900.00
    600.00
    1000.00
    0.00
    400.00
    200.00
    800.00
    0.01
    300.00
    500.00
    700.00
    

    由于某种原因,此代码无法存储数字。我怎样才能把这些数字读成浮动、存储和抽奖之后的数字?

    1 回复  |  直到 6 天前
        1
  •  0
  •   CaptainDaVinci    1 周前
    while (fscanf(arq, "%f\n", &premio[i])) != EOF )
           printf("%.2f\n", premio[i]);
    

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

    相反,你应该尝试以下方法:

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