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
например.