这不是主函数,只是其中一个功能。
head是定义在全局上的一个结构体指针,指向一个已经在程序中存在的链表的表头。n也是定义过的全局变量,是链表中链节的个数。
int save()
{
FILE *fp;
struct student stu0,*p;
int i,a=0;
stu0.num=n;
p=head;
if(p==NULL)
{printf("无数据需要存储\n");return 0;}
else
{if((fp=fopen("student11.dat","wb+"))==NULL)
return 0;
fwrite(&stu0,sizeof(struct student),1,fp);
for(i=0;i<n;i++)
{if(fwrite(p,sizeof(struct student),1,fp)!=1)
{printf("储存失败\n");fclose(fp);return 0;
}
else{p=p->next;}
}
}
printf("存储成功\n");
fclose(fp);
return 0;
}
本来没有student11.dat这个文件,
运行完之后没有出现student11.dat文件。。说明没有写进去。
最后5分,谢谢大家!
这段用fwrite写入数据的程序哪里错了。。。
答案:1 悬赏:50
解决时间 2021-03-12 09:55
- 提问者网友:离殇似水流年飞逝
- 2021-03-11 12:03
最佳答案
- 二级知识专家网友:夢想黑洞
- 2021-03-11 13:06
这段代码是可以输出到.dat文件中的。是不是你木有找到这个文件呢?
刚我测试过了,是可以生成.dat文件的:
#include<stdio.h>
struct student{
int num;
int b;
student * next;
}*head;
int save()
{
FILE *fp;
struct student stu0,*p;
int i,a=0;
stu0.num=1;
p=head;
if(p==NULL)
{printf("无数据需要存储\n");return 0;}
else
{if((fp=fopen("student11.dat","wb+"))==NULL)
return 0;
fwrite(&stu0,sizeof(struct student),1,fp);
for(i=0;i<1;i++)
{if(fwrite(p,sizeof(struct student),1,fp)!=1)
{printf("储存失败\n");fclose(fp);return 0;
}
else{p=p->next;}
}
}
printf("存储成功\n");
fclose(fp);
return 0;
}
int main(){
head = new student();
head->num = 1;
head->next = NULL;
save();
return 0;
}
刚我测试过了,是可以生成.dat文件的:
#include<stdio.h>
struct student{
int num;
int b;
student * next;
}*head;
int save()
{
FILE *fp;
struct student stu0,*p;
int i,a=0;
stu0.num=1;
p=head;
if(p==NULL)
{printf("无数据需要存储\n");return 0;}
else
{if((fp=fopen("student11.dat","wb+"))==NULL)
return 0;
fwrite(&stu0,sizeof(struct student),1,fp);
for(i=0;i<1;i++)
{if(fwrite(p,sizeof(struct student),1,fp)!=1)
{printf("储存失败\n");fclose(fp);return 0;
}
else{p=p->next;}
}
}
printf("存储成功\n");
fclose(fp);
return 0;
}
int main(){
head = new student();
head->num = 1;
head->next = NULL;
save();
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯