我的C应用程序有问题;我在.txt文件上有一些浮点数,我必须读取它们并按降序排序。当我执行fscanf命令然后执行printf时,我会在屏幕上看到奇怪的数字(我想是内存位置)。我该如何解决这个问题? 提前致谢
编辑 该应用程序由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 :(得分:1)
使用fscanf()从文件中读取的问题是它非常敏感,如果格式说明符以某种小的方式与数据不匹配,则会导致垃圾回收或堆栈/内存覆盖。您没有显示您的数据内容如何,因此有点难以说明格式说明符应该如何...例如,如果您之间有空格并且有新行字符 - 您可能需要指定宽度为好吧,如果你的值之间没有空格。
更简单的方法是使用fgets()(或fread)读取,然后,如果需要,使用strok()解析字符串,然后将标记转换为您想要的类型(在您的情况下为atof)。
答案 1 :(得分:0)
确保您为fscanf
提供左值(例如,如果a是浮点数,则不是fscanf("...",a);
,而是fscanf("...",&a);
)
并且printf
读取实际数字而不是指针或左值。