从文件中读取双精度浮点数?

时间:2010-11-13 22:46:47

标签: c string file double

我的问题非常简单;我的文本文件填充了双精度浮点数,我需要读入并存储在矩阵中。我知道如何打开文件,但从那里我不知道如何解析数据并转换它。数字由空格和换行符分隔,每个数字前面都有一个符号('+'或' - ')。我不确定我应该使用哪个函数(scanf,fgetc等)来读取数据。我不是新编程,虽然这是我第一次与C广泛合作。欢迎详细解释,因为我想更加熟悉如何处理这样的任务。谢谢!

编辑:应该澄清该文件是由代码生成的,因此无需担心用户搞乱它。另外,通过阅读文档,我似乎可以使用fread将文件的所有内容加载到字符串中,然后使用atof来解析每个double。这是对的吗?

2 个答案:

答案 0 :(得分:4)

double d;
scanf("%lf", &d);

scanf将跳过空格字符,让您在一个简单的循环中读取所有值。如果您正在阅读文件,那么fscanf应该是您的选择。

scanf documentationfscanf documentation

答案 1 :(得分:1)

您应该使用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");