帮帮忙 改一下这个程序
这是自己写的 运行时无法输出真确的信息 求高手改一改 输出和输入是一致的但是 输出有误 #include <stdio.h>
#include "string.h"
#define N 5
struct date
{
int month;
int day;
int year;
};
typedef struct /*自定义结构体*/
{ int num ; /*编号*/
char name[10]; /*姓名*/
char *sex; /*性别*/
struct datebirthday; /*生日*/
char telnum[20]; /*联系电话*/
char elestelnum[20];/*其他联系方式QQ,MES*/
char *adess; /*地址*/
}USTB;
/*定义函数类型 */
void getdata (USTB *sp); /*输入定义指针*/
void getsort (USTB *sp);/*按字典顺序排序*/
void outdata (USTB *sp);/*输出*/
void main()/*主函数*/
{
USTB sp[N];
getdata(sp);
getsort(sp);
outdata(sp);
}
void getdata(USTB *sp)
{ int i;
printf("请输入姓名&性别&生日&联系电话&QQ or MES&地址\n");
for(i = 0;i<=N ; i++)
{ gets(sp[i].name);
gets(sp[i].sex);
gets(sp[i].telnum);
gets(sp[i].elestelnum);
gets(sp[i].adess);
}
}
void getsort(USTB *sp)
{
int i,j,k;
USTB temp;
for(i=0;i<N-1;i++)/*按成员name的大小重新排列sp数组的元素*/
{
k = i;
for(j= i+1;j<N;j++)
if(strcmp(sp[k].name,sp[j].name)>0) k=j;/*strcmp是字符串比较函数*/
temp = sp[k];sp[k] = sp[i];sp[i]=temp;/*结构体赋值*/
}
}
void outdata(USTB *sp)
{
int i;
printf("通信录排序后:\n");
for(i=1;i<N;i++)
printf("名字=%s\t性别=%s\t联系电话=%s\t其他联系方式=%s\t地址=%s\n",sp[i].name,sp[i].sex,sp[i].telnum,sp[i].elestelnum,sp[i].adess);
}