2010-05-03 86 views
0

我對C應用程序有問題;我有一個.txt文件的一些浮點數,我必須讀取它們並按降序排序。當我做fscanf命令,然後printf,我得到屏幕上奇怪的數字(我想的內存位置)。我如何解決這個問題? 在此先感謝c從文件中讀取浮點數並排序

編輯 該應用程序由1200多條代碼行組成;這裏的問題:

....... 
fopen=(fp1,"scores.dat","r") 
fopen=(fp2, "team_number.dat", "r") 
fscanf(fp2,"%d", &x); 
for (i=0;i<x;i++) { 
fscanf(fp1,"%f", &punteggi) 
printf("%3.1f\n", punteggi) 
} 
...... 
+0

代碼和一個示例輸入文件是甚至嘗試回答這個問題的最低限度... – 2010-05-03 12:02:12

+0

您的.txt文件中有多少個數字? .txt文件很大? – gmunkhbaatarmn 2010-05-03 12:02:13

+0

請發佈您的代碼。 – 2010-05-03 12:02:34

回答

1

使用fscanf()從文件中讀取的問題在於,它非常敏感,如果格式化說明符以某種小的方式與數據不匹配,那麼您將得到垃圾回收或堆棧/內存覆蓋。您不會顯示數據的外觀如何,因此難以判斷格式說明符應該如何處理。例如,如果兩者之間有空格,並且有新行字符 - 您可能需要指定寬度爲那麼如果你的值之間沒有空格。

一個更爲簡單的方法是使用fgets()(或fread)讀取數據,然後在必要時使用strok()解析字符串,然後將令牌轉換爲您所需的類型(atof)。

+0

文件的格式是這樣的: 45.0 42.0 56.8 83.4 – Franky 2010-05-03 13:35:33

0

確保您的fscanf給左值(例如,不fscanf("...",a);如果是浮動而是fscanf("...",&a);

printf讀取實際的數字,而不是指針或左值。

+0

我剛剛做你說什麼,但它不工作 – Franky 2010-05-03 12:50:48