文件读写问题

jiaojianjj 2003-04-14 09:49:57
我先把一组数据以二进制形式存放e.txt文件中,再把它读出来放入a.txt,可是结果确实只能读到5838这个数据,后面就读不了.贴出原程序和二进制的文件显示,希望高手解答!
程序1:写数据,
FILE *fp;
int i;
unsigned short int p[44]={ 39957, 17313, 5114, 55381, 55348, 5838, 32794, 60766, 27328, 38390, 65116};
fp=fopen("e.txt","w");
for(i=0;i<11;i++)
fwrite(&p[i],sizeof(unsigned short int),1,fp);
fclose(fp);
程序2:写如另一文件
FILE *fp,*fp1;
int i;
unsigned short int temp;
fp1=fopen("e.txt","r");
fp=fopen("a.txt","w");
for(i=0;i<44;i++)
{
fread(&temp,sizeof(unsigned short int),1,fp1);
fwrite(&temp,sizeof(unsigned short int),1,fp);
}
fclose(fp);
fclose(fp1);
文件显示:
e:湣C?U?匚€^砝j鰰\氻雲w?
a:湣C?U?匚?????????????????????
...全文
71 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
justaseeker 2003-04-15
  • 打赏
  • 举报
回复
二进制文件:fp=fopen("e.txt","wb"); --->w后边要加b

jiaojianjj 2003-04-15
  • 打赏
  • 举报
回复
问题已经找到,是fopen()中参数“wb,”“rb”,感谢各位出手,请斑竹酌情给分
huigll 2003-04-14
  • 打赏
  • 举报
回复
在用2进制存储时 32794
好象是这个数据的问题吧。
不过用fprintf(f,"%d ",p[i]);写入。
用fscanf(fp2,"%d",&temp);读取没有问题。
wanneng882 2003-04-14
  • 打赏
  • 举报
回复
好像你的字节数不对吧,你把它换成fwrite(&p[i],sizeof(unsigned short int),4,fp);
或者你改用putw(int,FILE *fp);我用过这个,你就可以直接向里边写整型
million 2003-04-14
  • 打赏
  • 举报
回复
二进制文件是txt扩展名吗?

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧