C语言怎么读取保存的名字到数组中

老师要我们做一个球队功能表,要有 1.输入新队员信息2.输出所有队员的信息3.查找队员的信息4.删除队员的信息 5.姓名排序。前面的4个程序已经有了,就差名字排序不会了,大家帮帮忙!
这是程序:
#include<iostream>
#include<stdio.h>
using namespace std;

struct people
{
char name[20];
int age;
char gender;
int gz;

};
void m()
{struct people sr;
cout<<"请输入队员姓名"<<endl;
cin>>sr.name;
cout<<"请输入队员年龄"<<endl;
cin>>sr.age;
cout<<"请输入队员性别(M/W)"<<endl;
cin>>sr.gender;
cout<<"请输入队员工资"<<endl;
cin>>sr.gz;

FILE *fp;
fp=fopen("record.dat","a+");
fwrite(&sr,sizeof(struct people),1,fp);
fclose(fp);
cout<<"------------------"<<endl;

}
void showall()
{

FILE *fp;
struct people p;
fp=fopen("record.dat","r");
while(fread(&p,sizeof(struct people),1,fp))
{
//fread(&p,sizeof(struct people),1,fp);
cout<<"姓名:"<<p.name<<endl;
cout<<"年龄:"<<p.age<<endl;
cout<<"性别:"<<p.gender<<endl;
cout<<"工资:"<<p.gz<<endl;
cout<<"------------------"<<endl;
}
fclose(fp);
}
void search()
{
cout<<"输入要查找的姓名:";
struct people p;
char name[20];
cin>>name;
FILE *fp;
fp=fopen("record.dat","r");
while(fread(&p,sizeof(struct people),1,fp))
{
//fread(&p,sizeof(struct people),1,fp);
if(strcmp(name,p.name)==0)
{
cout<<p.name<<endl;
cout<<p.age<<endl;
cout<<p.gender<<endl;
cout<<p.gz<<endl;
}
}
fclose(fp);
cout<<"------------------"<<endl;
}
void deleteinfo()
{
char n[20];
int a=0,i=0,j;
struct people p;
FILE *fp;
fp=fopen("record.dat","r");
while(fread(&p,sizeof(struct people),1,fp))
{
a+=1;
}
fclose(fp);

struct people *pp;
pp=new struct people[a];
fp=fopen("record.dat","rb");
while(fread(&pp[i],sizeof(struct people),1,fp))
{
i+=1;
}
fclose(fp);
cout<<"请输入队员姓名:";
cin>>n;
remove("record.dat");
fp=fopen("record.dat","w+");
for(j=0;j<a;j++)
{
if(strcmp(n,pp[j].name)!=0)
{
fwrite(&pp[j],sizeof(struct people),1,fp);
}
}
cout<<"已删除"<<n<<"的信息"<<endl;
cout<<"------------------"<<endl;

}
void paixu()
{
补充程序
}
main ()
{
int i=0;

while(true)
{
cout<<"******************************"<<endl;
cout<<"* 1.输入新队员信息 *"<<endl;
cout<<"* 2.输出所有队员的信息 *"<<endl;
cout<<"* 3.查找队员的信息 *"<<endl;
cout<<"* 4.删除队员的信息 *"<<endl;
cout<<"* 5.姓名排序 *"<<endl;
cout<<"* 0.退出 *"<<endl;
cout<<"* 请选择: *"<<endl;
cout<<"******************************"<<endl;
cin>>i;
switch(i)
{
case 1:
m();
break;
case 2:
showall();
break;
case 3:
search();
break;
case 4:
deleteinfo();
break;
case 5:
paixu();
break;
case 0:
exit(0);
}
}
}

第1个回答  2012-06-09
你要按名字的什么排序?追问

英文名字A-Z

追答

for(i=0;ip.name[y])
{
strcpy(temp,n,pp[i].name);
strcpy(n,pp[i].name,n,pp[j].name);
strcpy(n,pp[j].name,temp);
break;
}
break;
}
}
}

追问

额,我是用CFree编写的,你确认这个在CFree里正确吗

本回答被提问者采纳
第2个回答  2012-06-09
路过学习
相似回答