该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
最近在学文件操作方面的知识,在文件读的时候读出链表老是多出一行乱码,大家帮帮看看到底是哪里出了错:
文件写.c
#include
#include
#define TXL struct txl
#define LEN sizeof(TXL)
struct txl
{
long num;
char name[18];
char sex[4];
int age;
char phone[15];
struct txl *next;
};
int main(int argc, char *argv[])
{
int n=1;
char r,a[20];
TXL *head,*p;//定义链表头
FILE *fp;//文件操作开始
printf("请输入文件名:\n");
scanf("%s",a);
fp=fopen(a,"wb");
head=p=(TXL *)malloc(LEN);
while(1)//链表的建立
{
p->num=n;
printf("请输入学生姓名:\n");
scanf("%s",p->name);
printf("请输入学生性别:\n");
scanf("%s",p->sex);
printf("请输入学生年龄:\n");
scanf("%d",&p->age);
printf("请输入学生电话号码:\n");
scanf("%s",p->phone);
getchar();
printf("是否继续?(Y/y)\n");
scanf("%c",&r);
if(r!='Y'&&r!='y') break;
p->next=(TXL *)malloc(LEN);
p=p->next;
n++;
}
p->next=NULL;
p=head;
while(p!=NULL)//检验链表并输出
{
fwrite(p,LEN,1,fp);
printf("NO:%d\n",p->num);
printf("姓名:%s\n",p->name);
printf("性别:%s\n",p->sex);
printf("年龄:%d\n",p->age);
printf("电话:%s\n",p->phone);
p=p->next;
}
fclose(fp); //文件关闭
system("PAUSE");
return 0;
}