文件读写的困惑?

jiaojianjj 2003-04-14 10:03:09
我先把一组数据以二进制形式存放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?匚?????????????????????

...全文
70 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiyongfan 2003-04-15
  • 打赏
  • 举报
回复
问题的关键:
你读写文件时使用的不是二进制形式。
用文本形式读二进制文件时,遇到0就结束了,0是文本文件的结束标志。

JennyVenus() ( )已经为你解决了问题,只是说得不够坚定:)
fp=fopen("e.txt","w"); //这里最好用"wb"。
~~~~~~~~~~~~~~~
就该这样说:这里不能用"w",只能用"wb"。
jiaojianjj 2003-04-15
  • 打赏
  • 举报
回复
高手!给分!
用户 昵称 2003-04-15
  • 打赏
  • 举报
回复
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"); //这里最好用"wb"。
for(i=0;i<11;i++)
fwrite(&p[i],sizeof(unsigned short int),1,fp);
fclose(fp);
----------------------------
FILE *fp,*fp1;
int i;
unsigned short int temp;
fp1=fopen("e.txt","r"); //"rb"
fp=fopen("a.txt","w"); //"wb"
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);

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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