c语言中,为什么调用文件内的数据会出现乱码

number.dat中存了10个int类型的数据,将他们打印后出现乱码,求解释#include<stdio.h>#defineM10intmain(){FILE*fp;i... number.dat 中存了10个int类型的数据,将他们打印后出现乱码,求解释
#include<stdio.h>
#define M 10
int main( )
{
FILE *fp;
int i;
fp=fopen("number.dat","r");
for(i=0;i<M;i++)
{
fread(&a[i],4,1,fp);
printf("%10d",a[i]);
printf("\n");
}
return 0;
}
展开
 我来答
yuantailing
2013-08-10 · TA获得超过2545个赞
知道小有建树答主
回答量:1167
采纳率:92%
帮助的人:663万
展开全部

先确认一下文件是二进制存的吗?如果是,用记事本打开它,应该是看不到数字的。不是说在记事本里输入字符1 2 3 4,然后保存成number.dat,程序就能正确读取的。


二进制读取的时候fopen要写成

fp=fopen("number.dat","rb");

rb表示binary:二进制读写。

追问
我不太懂,我直接在记事本中输入十进制数字后,再保存的。打开记事本是可以看到数字的。
这种情况怎么办?
追答

比如记事本里存的是

1 2 3 4 ...

那么读取应该是

fp=fopen("number.dat","r");

这句还是"r"不变。

fread(&a[i],4,1,fp);这句要改了

fscanf(fp, "%d", &a[i]);

就跟scanf用法差不多,多一个参数填fp。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式