Чтение чисел с плавающей запятой двойной точности из файла? - PullRequest
2 голосов
/ 14 ноября 2010

Моя проблема довольно проста;У меня есть текстовый файл, заполненный числами с плавающей запятой двойной точности, которые мне нужно прочитать и сохранить в матрице.Я знаю, как открыть файл, но оттуда я не уверен, как разобрать данные и преобразовать их.Числа разделены пробелами и символами новой строки, и каждому предшествует знак (либо «+», либо «-»).Я не уверен, какую функцию (scanf, fgetc и т. Д.) Мне следует использовать для чтения данных.Я не новичок в программировании, хотя я впервые много работаю с C. Приветствуются подробные объяснения, так как я хотел бы узнать больше о том, как решаются подобные задачи.Спасибо!

Редактировать: Нужно было уточнить, что файл генерируется кодом, поэтому не нужно беспокоиться о том, что пользователи возятся с ним.Также из чтения документов кажется, что я мог бы просто использовать fread, чтобы загрузить все содержимое файла в строку, а затем использовать atof для анализа каждого двойного числа.Это правильно?

Ответы [ 2 ]

4 голосов
/ 14 ноября 2010
double d;
scanf("%lf", &d);

scanf пропустит символы пробела и позволит вам прочитать все значения в простом цикле. Если вы читаете из файла, тогда fscanf должен быть вашим выбором.

документация по scanf и документация по fscanf

1 голос
/ 14 ноября 2010

Вы должны использовать fgets AND sscanf и их возвращаемые значения, например,

char line[100];
while( fgets( line,100,filepointer ) )
  if( 1==sscanf(line,"%lf",&adoublevariable) )
    printf("%f",adoublevariable);
  else
    puts("not a double variable");
...