c语言中的排序问题,搞蒙了!

void sortbyname(){

int i,j;

struct student temp;

FILE fp; fp=fopen ("D:\student.txt","rb+");

for (i=0;i<num;i++)
fread(&student[i],sizeof(struct student),1,fp); fclose(fp);

system("cls");

printf("\t\t
************** 下面是通讯录所有信息************\n");

printf("\n 学号 姓名 年龄 性别 出生年月 地址 电话 E-mail \n");

for (i=0;i printf("\n\n");
for(i=0;i for(j=0;j0) {temp=student[j];

student[j]=student[j+1];

student[j+1]=temp; }

printf("\t\t*************** 下面是排序后通讯录所有信息************\n");
printf("\n 学号 姓名 年龄 性别 出生年月 地址 电话 E-mail \n");
for (i=0;i<num;i++) printf("\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",student[i].num,student[i].name,student[i].age,student[i].sex,student[i].csny,student[i].address,student[i].tel,student[i].email); printf("\n\n");fp=fopen ("d:\student.txt","wb"); for(j=0;j<num;j++)
fwrite(&student[j],sizeof(struct student),1,fp); fclose(fp);
printf("\n\n*******按任意键返回主界面********\n"); getch();index();
system("cls");}
另外
char name[20]
如果是数字就是排序成功,如果是文字,那么输出就多多少少的不行,求大神解决!!!!

for (i=0;i printf("\n\n");
for(i=0;i for(j=0;j0) {temp=student[j];

student[j]=student[j+1];

student[j+1]=temp; }

那两个for循环怎么看起来这么诡异,是我太LOW了吗?理解不到,求赐教

应该是你的字符比较处理的有问题,可以仔细看看,

你程序就没有比较关系怎么排序?