Прочитать каждую строку файла, используя fscanf - PullRequest
0 голосов
/ 09 июня 2019

Я пытаюсь прочитать каждую строку файла .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

Этот код по какой-то причине не может хранить числа. Как я могу прочитать эти числа как float, storage и после этого лотереи?

1 Ответ

0 голосов
/ 09 июня 2019
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]);
...