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;
} 展开
#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;
} 展开
1个回答
展开全部
先确认一下文件是二进制存的吗?如果是,用记事本打开它,应该是看不到数字的。不是说在记事本里输入字符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。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询