簡體   English   中英

fscanf讀取格式不起作用

[英]fscanf read format not work

#include <stdio.h>
int main()
{
    FILE *fp = fopen("b3lyp.dat", "r");

    float t[13];
    double y[13];
    for(int i=0; i<13; i++){
        if (feof(fp))
            break;
        fscanf(fp,"%lf %ld",&t[i],&y[i]);
        printf("%lf %ld\n", &(t[i]),&(y[i]));
     }
}

我想用上面的程序讀取下面的數據,

1.04981 0.043781274601002
1.06981 0.029635536304994
1.08981 0.018682198951012
1.10981 0.010554297987994
1.12981 0.004922853528996
1.14981 0.001492913057007
1.16981 0
1.18981 0.000206935596992
1.20981 0.001900993164014
1.22981 0.00489135292699
1.24981 0.009006824127994
1.26981 0.014093809840006
1.28981 0.020014492864988

而我總是得到如下的printf。 我想以長浮點或雙精度讀取數據,正確的方法應該是什么? 謝謝你的幫助

0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000
0.000000 0.000000

您要使用:

fscanf(fp,"%f %lf", &t[i], &y[i]);
printf("%f %f\n", t[i], y[i]);

scanf函數和printf函數的格式說明符略有不同:

  • fscanf%f用於float%lf用於double
  • printf%f同時用於floatdouble

另外, printf函數使用按值傳遞,因此您無需傳遞要打印的值的地址。 只需直接傳遞值即可。

如果您需要更多信息,請參見以下printfscanf的參考頁:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM