Два варианта (чисто примеры - без проверок на ошибки и т. д.) :
Православный:
подключить locale.h и вызвать setlocale с установкой русского языка (т. к. у нас принят разделитель, а не .)
(в разных версиях компиляторов у setlocale могут быть разные параметры, этот работает в Visual C++ по крайней мере)
#include <locale.h>
#include <stdio.h>
int main() {
float fValue;
setlocale(LC_ALL, "RUSSIAN");
FILE *f = fopen("d:\\test.txt", "rt");
fscanf(f, "%f", &fValue);
printf("%f", fValue);
fclose(f);
return 0;
}
Иной =):
считать как строку, заменить "," на "." преобразовать строку в число
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char buf[255];
float fValue;
FILE *f = fopen("d:\\test.txt", "rt");
//Читаем строку в buf
fscanf(f, "%s", &buf);
//Ищем запятую
char *pFind = strchr(buf, ',');
//Если нашли - меняем на точку
if (pFind) *pFind = '.';
//Преобразуем строку в число
fValue = atof(buf);
printf("%f", fValue);
fclose(f);
return 0;
}
Другие языки программирования и технологии
как считать из файла число с плавающей запятой в Си? точку нормально воспринимает, а запятую нет.
Прогоните файл через tr и скормите вашей программке:
$ cat fl.txt
3,14
1,73
$ cat fl.txt | tr "," "."
3.14
1.73
$ cat fl.txt
3,14
1,73
$ cat fl.txt | tr "," "."
3.14
1.73
Если неудобно каждый раз редактировать исходный файл, можно это сделать бинарным считыванием, с помощью fread
Считываете весь файл в символьный массив, там пробегаете и делаете замену запятых на точку, ну и, устанавливая затем указатель к каждому значению, преобразовываете значения с помощью atof в числа с плавающей точкой
Считываете весь файл в символьный массив, там пробегаете и делаете замену запятых на точку, ну и, устанавливая затем указатель к каждому значению, преобразовываете значения с помощью atof в числа с плавающей точкой
Похожие вопросы
- Как перевести дробное десятичное число в двоичное. С плавающей запятой.
- в ряд записаны натуральные числа без разделения запятой 1234567891011121314151617181920 какое число будет на 2007 месте?
- Assembler - Числа с плавающей точкой
- Как занести данные считанные из файла в массив на языке си?
- Найти число Фибоначчи, ближайшее к заданному натуральному числу N. (программирование в языке Си)
- считать большой файл.
- Узнать сколько знаков после запятой в числе? Visual Basic
- Ввод значений с плавающей точкой через запятую C++.
- Представить заданные вещественные числа А и В в формате с плавающей точкой.
- Какая функция определяет количество знаков после запятой переменной double?