[求助]我的程序为什么排序那部分不能用,谢谢
这是我写的程序,可是不知道为何排序那一部分没有用???????? 求教高手!!!!
谢谢大家~~~~~~
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void input();
void sort();
void search();
void output();
struct worker /*声明结构体*/
{int num;
char name[10];
char bm[10];
}wo[20];
initial() /*取得数据的组数,并将其返回的函数*/
{
int i,total;
FILE *fp1;
if ((fp1=fopen("wo_list.dat","r"))==NULL)
{
printf("Can not open file!\n");
}
for(i=1;i<=100;i++)
if(fread(&wo[i],sizeof(struct worker),1,fp1)!=1)
{
total=i-1;
break;
}
fclose(fp1);
return(total);
}
void save(int n) /*保存结构体数组的函数*/
{
FILE*fp1;
int i;
if ((fp1=fopen("wo_list.dat","w"))==NULL)
{
printf("Can not open file!\n");
return;
}
for(i=1;i<=n;i++)
if(fwrite(&wo[i],sizeof(struct worker),1,fp1)!=1)
printf("File write error!\n");
fclose(fp1);
}
void input() /*用于输入职工数据的模块*/
{
int i,n,total;
total=initial();
printf("您想输入几位职工的信息? ");
scanf("%d",&n);
printf("\n\n");
for(i=total+1;i<=(n+total);i++)
{
printf("请输入职工信息%d:\n",i);
printf("职工号:");
scanf("%d",&wo[i].num);
printf("姓名:");
scanf("%s",wo[i].name);
printf("部门:");
scanf("%s",wo[i].bm);
}
save(n+total);
}
void sort() /*根据职工号排序*/
{
int total,temp,i,j;
total=initial();
for(i=1;i<=total;i++)
for(j=1;j<=total-i;j++)
{if(wo[j].num>wo[j+1].num)
temp=wo[j].num;wo[j].num=wo[j+1].num;wo[j+1].num=temp;
}
printf("按职工号由小到大的顺序排序:\n");
for(i=1;i<=total;i++)
{
printf("%d %s %s \n",i,wo[i].name,wo[i].bm);
}
printf("\n");
}
void search() /*根据职工号查找*/
{
FILE*fp1;
int total,i;
long num1;
total=initial();
if ((fp1=fopen("wo_list.dat","r"))==NULL)
{
printf("Can not open file!\n");
return;
}
printf("请输入职工号:");
scanf("%ld",&num1);
printf("姓名\n");
for(i=0;i<=total;i++)
{
if(wo[i].num==num1)
printf("%s\n\n",wo[i].name);
}
fclose(fp1);
}
void output() /*打印已存入"wo_list.dat"的数据*/
{
int i,total;
FILE *fp1;
fp1=fopen("wo_list.dat","r");
total=initial();
printf("Total worker records: %4d\n\n\n",total);
printf(" 职工号 姓名 部门\n");
for(i=1;i<=total;i++)
{
if(fread(&wo[i],sizeof(struct worker),1,fp1)!=1)break;
printf(" %d %s %s ",wo[i].num,wo[i].name,wo[i].bm);
printf("\n");
}
fclose(fp1);
}
main()/*主菜单*/
{
int choice;
while(1)
{printf("1、输入职工信息\n");
printf("2、职工信息排序\n");
printf("3、职工信息查询\n");
printf("4、输出职工信息\n");
printf("5、退出\n");
printf("请输入你的选择: ");scanf("%d",&choice);
switch(choice)
{case 1: input();break;
case 2: sort(); break;
case 3:search();break;
case 4:output();break;
case 5:exit(0);break;
default :printf("输入错误,请重新输入!\n");
}
}
}