Я пытаюсь прочитать файл, содержащий строку, содержащую строку, целое число и число с плавающей точкой. Данные разделены запятыми, и я видел массу информации о том, как лучше всего к этому подойти. Я упростил задачу, пытаясь сначала прочитать одну строку, а затем работать над реализацией нескольких строк.
Мне удалось прочитать первые две части данных. Это поплавок вызывает у меня проблемы.
Вот пример того, что я пытаюсь прочитать:
CHANNEL_1, 0, 0,453
char CHANNEL_NAME_[BUF_SIZE];
uint32_t val1_;
double val2_;
FILE *fp;
int c;
fp = fopen("E:\\read_from_file\\config.cfg", "r");
if (fp < 1)
{
printf("Failed to open file = %d\n", fp);
fclose(fp);
}
c = fscanf(fp, "%[^,], %u[^,], %lf", CHANNEL_NAME_, &val1_, &val2_);
printf("[%s] [%u] [%lf]\n", CHANNEL_NAME_, val1_, val2_);
printf("C = %d\n", c);
Я могу правильно напечатать строку и целое число, но это проблема с плавающей точкой. Выдается как случайное число с плавающей точкой, что-то вроде 34534524524523452345.0000000. Я ожидаю увидеть поплавок, как указано выше, 0,453.
Когда я печатаю C, который является результатом fscanf, я получаю 2, что неверно, так как я ожидаю прочитать 3, из-за 3 типов данных, читаемых в.
Что я делаю не так?