链表写入文件出错

winhkey 2005-10-27 03:32:50
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
struct stu
{
char name[10];
char age[3];
char phone[10];
struct stu *next;
};
struct stu *head,*pf,*pb;
FILE *fp;
int n,i;
void main()
{
pb=(struct stu*)malloc(sizeof(struct stu));
printf("the number:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\nname:");
scanf("%s",&pb->name);
printf("\nage:");
scanf("%s",pb->age);
printf("\nphone:");
scanf("%s",pb->phone);
if(i==0)
head=pf=pb;
else
pf->next=pb;
pb->next=NULL;
pf=pb;
}
if((fp=fopen("report","wb"))==NULL)
{
printf("error");
exit(0);
}
fwrite(head,sizeof(struct stu),n,fp);
fclose(fp);
}
把结构体元素都设成字符串了
...全文
91 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
csucdl 2005-10-28
  • 打赏
  • 举报
回复
请注意程序书写的规范
csucdl 2005-10-28
  • 打赏
  • 举报
回复
struct stu
{
char name[10];
char age[3];
char phone[10];
stu *next;
};

void main()
{
stu *head = NULL, *pf = NULL, *pb = NULL;
FILE *fp = NULL;
int n = 0, i = 0;
printf("the number:");
scanf("%d",&n);
for(i = 0;i < n; i++)
{
if(head == NULL)
{
head = pf = (stu*)malloc(sizeof(stu));
}
else
{
pf->next = (stu*)malloc(sizeof(stu));
pf = pf->next;
}
printf("name:");
scanf("%s",pf->name);
printf("age:");
scanf("%s",pf->age);
printf("phone:");
scanf("%s",pf->phone);
}
pf->next = NULL;


if((fp = fopen("report.txt","wb")) == NULL)
{
printf("error");
exit(-1);
}
pf = head;
while(pf != NULL)
{
fwrite(pf, sizeof(stu), 1, fp);
pf = pf->next;
}
fclose(fp);
pf = head;
while(pf != NULL)
{
pb = pf->next;
delete pf;
pf = pb;
}
}
winhkey 2005-10-27
  • 打赏
  • 举报
回复
打错了~~~~
winhkey 2005-10-27
  • 打赏
  • 举报
回复
我改成while(head!=NULL)
{
printf("%s %s %s",head->name,head->age,head->phone);
head=head->next;
}
还是不行
winhkey 2005-10-27
  • 打赏
  • 举报
回复
那是不是要用for循环
csucdl 2005-10-27
  • 打赏
  • 举报
回复
fwrite 是将一块连续的内存单元写入到文件中去

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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