中易网

C文件中,为什么我写了个文件打开却只是?呢?

答案:2  悬赏:50  
解决时间 2021-11-13 23:08
#include
struct student
{
int num;
char name[20];
int age;
char addr[20];
}st1[3],st2[3],*p1,*p2;
void main()
{
FILE *fp;
int i;
p1=st1;
p2=st2;
if((fp=fopen("C:\\文本.txt","w+"))==NULL)
{
printf("Can not open this file\n");
exit(0);
}
printf("input data:\n");
for(i=0;i<3;i++)
{
scanf("%d%s%d%s",&p1->num,p1->name,&p1->age,&p1->addr);
p1++;
}
p1=st1;
fwrite(p1,sizeof(struct student),3,fp);
rewind(fp);

fread(p2,sizeof(struct student),3,fp);
printf("NUM\tNAME\tAGE\tADDR\n");
for(i=0;i<3;i++)
{
printf("%d\t%s\t%d\t%s\n",p2->num,p2->name,p2->age,p2->addr);
p2++;
}
fclose(fp);
}
最佳答案
没用过w+ 模式。 关于二进制写入和读取,我之前都是用 wb 方式写, 然后再用 rb方式打开读。
怀疑是二进制和文本模式的问题,你可以加一句代码试一下:
_set_fmode(_O_BINARY);
设置文件操作为二进制模式,或者在fopen的模式上加b。
全部回答
预编译的时候会把包含的头文件展开,即把头文件里面的内容展开在当前文件中,如果包含所有头文件,第一会很占空间,因为有些头文件里面的变量(比如有很大的数组或者什么的)在当前这个文件并没有用到;其次很耗时间,因为要一个个去展开;第三,撇开时间和空间消耗不说,可能会存在不同头文件中声明或者定义了同名变量,这样在编译的时候就会报错。但是你却很难找到错误,因为头文件里面的东西你看不见,其次还可能引起一个重复包含的问题,比如头文件a.h包含了b.h,你在当前.c文件中如果#include"a.h" 后又#include"b.h" 的时候就会报错了,因为你重复包含了,当然重复包含可以通过#ifdef#endif机制解决。但是你不能保证每个头文件中都做了这样的操作。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
小孩子房间的地面一般用瓷砖好,还是木地板好
梦幻西游副本失败1次,不想做了,我团长不强退,
野生猕猴桃酒的酿制方法
柯达发源地怎么去啊,我要去那办事
輕冷的意思是什么?輕冷的释义是什么啊?
为什么拉大便时第一次很快就出来后面都要很久
茶麸生姜养发馆地址有知道的么?有点事想过去
如何成为上司的左右手
欧琳78430水槽好用吗?
上海九院附近哪有如家连锁
败兴而归的意思?成语怎么解释?
在亲戚公司工作,目前无事可干,却又没有工资
我就最近左侧肋骨下有时疼痛,是何原因?
打开示波器后,屏幕上看不到扫描线也看不到光
三星手机刷机多少钱
推荐资讯
记得歌词找歌曲名是温柔的走下去或者是温暖的
难舍难离的意思?成语怎么解释?
朝鲜现在的生活水平是什么样子?
请问2012年9月,从武昌火车站至武汉飞机场有
惊世骇目的意思?成语怎么解释?
谁知道安康蓝博网吧在那里具体地址?谢谢
飞鹤飞帆纸盒装奶粉怎么辩真假
东昌府区侯营派出所办公地址在什么地方,我要
上环5年了,现在取环三个月还没有怀上孩子是
易腾电脑地址在什么地方,我要处理点事
通辽到呼市飞机多长时间
广东野生铁皮石斛哪里买好
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?