fgetc пропустить символы и затем назначить целое число

У меня есть файл data.dat

HI5 LO2

из которого я хочу прочитать 5 и 2, и сохранить их как uint16s. Я написала

#include <stdio.h>
int main()
{
    unsigned short int high;
    FILE *pFile;
    pFile = fopen("data.dat", "r");
    int c;
    while(c != 'I')
    {
        c = fgetc(pFile);
    }
    high = while(c != ' ')
    {
        c = fgetc(pFile);
    }
    printf("%i\n", high);
    if(c == ' '){puts("we read until 1st line space");}
    else{puts("we didn't read until 1st line space");}
    fclose(pFile);
    return 0;
}

high присваивается циклу while, потому что мы можем получить большие числа, например, 10, но при этом мы получим ошибку. Как я получил назначение целых чисел из текстовых файлов?

1 ответ

Использование fscanf() вместо:

unsigned short i[2];
/* fscanf() returns number of successful assignments made,
   which must be 2 in this case. */
if (fscanf(pFile, "HI%hu LO%hu", &i[0], &i[1]) == 2)
{
}

Если файл имеет несколько строк, используйте fgets() читать его построчно и использовать sscanf() извлечь целочисленные значения из каждой строки.

Всегда проверяйте результат операций ввода-вывода, чтобы fopen() не возвращается NULL например.

Другие вопросы по тегам