LINUX.ORG.RU

fscanf не читает double

 


0

2

Есть текстовый файл следующего вида:

35.0 20.0
34.925062479170386 21.497501249702424
34.70099866761862 22.980039961925918
....

Пытаюсь прочитать из него эти значения:

FILE *file = fopen(file_name, "r");
double x, y;
fscanf(file, "%lf %lf\n", &x, &y);

После этого x=35, y - invalid floating number. Где может быть ошибка?

★★★★★

Последнее исправление: templarrr (всего исправлений: 1)

первое что надо сделать это посмотреть что вернул fscanf. Никогда, НИКОГДА в сишечках не игнорируй возвращаемое значение функций.

true_admin ★★★★★
()
Ответ на: комментарий от greenman

То же самое. Целые числа считываются нормально, а вот дальше точки процесс почему-то не идет.

templarrr ★★★★★
() автор топика
Ответ на: комментарий от templarrr

значит проблемы со вторым значением. Оставь просто паттерн без \n

true_admin ★★★★★
()

tet.c

#include <stdio.h>
#include <stdlib.h>

int main()
{  
    FILE *file = fopen("/home/dron/num", "r");
    double x, y;
    fscanf(file, "%lf %lf\n", &x, &y);
    printf("%f %f \n",x,y);
    return 0;
}
num

35.0 20.0
34.925062479170386 21.497501249702424
34.70099866761862 22.980039961925918
dron@gnu:~/Рабочий стол$ gcc -o test tet.c ;./test
55.550000 33.330000 
dron@gnu:~/Рабочий стол$
Dron ★★★★★
()
Ответ на: комментарий от templarrr

В русской локали десятичный разделитель — запятая. Сам всегда думал, что программ на сях это не касается.

greenman ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.