2011-10-21 131 views
0

我有以下代碼:雙轉換字符串

FILE *fp; 
double Data[9][7]; 
int i=0,k;     
fp = fopen ("dstest 2.mod", "r") ; 
fscanf(fp, "%E %E %E %E %E %E %E*[ ]", 
      &Data[i][0], 
      &Data[i][1], 
      &Data[i][2], 
      &Data[i][3], 
      &Data[i][4], 
      &Data[i][5], 
      &Data[i][6]); 

但每當我運行它,我得到以下警告:

Read.c:12:警告:格式 '%E' 預計鍵入「 float *',但參數3的類型是'double *'

它適用於所有參數(Data [i] [j])。我不知道什麼是錯的。當我使用浮點數據而不是雙數據時問題消失。但這不符合我的要求。

+0

當你編譯它時,你會得到這個警告,而不是當你運行它時。 –

回答

2

scanf的人說,你所需要的l修改字符讀雙:

fscanf(fp, "%lE %lE... 

等。

0

使用%lE來指定double而不是float

0

%E適用於float s;對於double,您必須使用%lE

可悲的是,printfscanf這裏之間的矛盾並沒有幫助(printf因爲float類型的所有可變參數不支持float s的隱式轉換爲double,但scanf確實讓兩個FP類型之間的差異)