2010-05-03 89 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