2016-05-26 30 views
0

我必须得到该文件的双号的代码:与convertation简单的代码串入双不起作用

#include <stdio.h> 
#include <string.h> 

FILE *fr;   

int main(void) 
{ 
    int n; 
    double elapsed_seconds; 
    char line[80]; 
    fr = fopen ("time1.log", "rt");  
    sscanf (line, "%3.6f", &elapsed_seconds); 
    printf ("%3.6f\n", elapsed_seconds); 
    fclose(fr); 
} 

现在,time1.log只包含数0.145213。但该程序打印0.问题在哪里?

+3

你需要FREAD成'line'第一... –

+1

'与fgets(行,行的sizeof,FR);''之前sscanf'。然后'sscanf(line,“%lf”,&elapsed_seconds);调用'fopen()'时调用' – BLUEPIXY

+0

,总是检查(!= NULL)返回值以确保操作成功 – user3629249

回答

2

张贴代码缺少一个临界线:

不仅代码需要打开该文件,它也需要读取文件入行变量。

要么插入,只是调用fopen()

fgets(line, sizeof(line), fr); 

或(不太理想)后

fscanf(fr, "%lf", &elapsed_seconds); 

注意更换调用sscanf():如果您保持呼叫sscanf()然后格式字符串应为:“%lf”,与致电fscanf()

的呼叫相同,使用对的呼叫将允许消除line[]阵列。

变量n从未使用过,所以应该被淘汰

2

应该

#include <stdio.h> 
#include <string.h> 

FILE *fr;   

int main(void) 
{ 
    int n; 
    double elapsed_seconds; 
    char line[80]; 
    fr = fopen ("time1.log", "rt"); 
    fgets(line, 80, fr);       // <--- Note this line 
    sscanf (line, " %lf", &elapsed_seconds); 
    printf ("%3.6f\n", elapsed_seconds); 
    fclose(fr); 
} 

这是因为你必须sscanf之前,从文件中读取到字符串数据荷兰国际集团该字符串。

0

在致电sscanf解析数据之前,您需要读取文件中的数据 - 请致电fgets(line,80,fr)

相关问题