- 论坛徽章:
- 0
|
5可用积分
#include"stdlib.h"
#include"stdio.h"
char name0[15];
typedef struct student{
int no;
int age;
char * name;
char sex;
struct student *next;
} studenttype;
typedef studenttype * pstudenttype;
pstudenttype top;
void main(){
studenttype students;
students.name=name0;
int m;
FILE * file1;//录入文件
FILE * file2;//新文件
if((file1=fopen("d:\stu.txt","w+"))==NULL){
printf("can not open file1");
exit(0);
}
if((file2=fopen("d:\stul.txt","w"))==NULL){
printf("can not open file2");
exit(0);
}
printf("请输入录入学生数:");
scanf("%d",&m);
int i=1;//录入
while(i<=m){
printf("请输入学生序号、年龄、性别、姓名:\n");
scanf("%d %d %c %s",&(students.no),&(students.age),&(students.sex),students.name);
fprintf(file1,"%d%d%c%s",students.no,students.age,students.sex,students.name);
i++;
}
top=NULL;//创建链表
for(i=1;i<=m;i++){
pstudenttype p;
p=(pstudenttype)malloc(sizeof(studenttype));
fscanf(file1,"%d%d%c%s",&(p->no),&(p->age),&(p->sex),p->name);
p->next=top;
top=p;
}
pstudenttype p,p0,r,r0,q;//排序
p0=NULL;
p=top;
while(p!=NULL){
r=top;
while((r->age<p->age)&&(r!=p)){
r0=r;
r=r->next;
}
if(r!=p){
q=p;
p0->next=p->next;
p=p0;
if(r==top){
q->next=top;
top=q;
}else{
q->next=r;
r0->next=q;
}
}
p0=p;
p=p->next;
}
pstudenttype pp=top;//将链表中数据转入文件
while(pp!=NULL){
fprintf(file2,"%d%d%c%s",pp->no,pp->age,pp->sex,pp->name);
pp=pp->next;
}*/
}
不知为什么链表中数据无法转入文件中,我怀疑是上一步就没将文件file1中的数据正确的读入到链表中,但不知怎么改。帮帮忙!谢谢! |
|