user-0 提问: 求大神解答一个小问题

回复:
user: user-0
content: sort()函数需要比较两个char 型变量的大小怎么办？

user: user-0
content: #include<stdio.h> #include<stdlib.h> #include<string.h>    struct Member { 	char number[10]; 	char name[10]; 	char gender[10]; 	int birth; 	char yuanxi[10]; 	char zhiwu[10]; 	int sushehao; 	int phonenumber;  }; struct Member lib[10];  int num=0;  void jiemian(); void rush()  ; int display(char s[]); void delete_member(); void jiemian();  void sort(); void save_t(); void search(); void modify();    void jiemian() {  	printf("简单社团管理系统\n");     printf("选择想要进行的操作：\n"); 	printf("1添加学生信息  2删除学生信息  3修改学生信息 4查找学生信息 5显示学生信息 6保存程序 7按学号排序 8退出程序\n");   }      void rush()                //新成员入社 { 	int i=num;	 	printf("请输入第%d个同学信息\n",i+1); 	printf("请输入学号："); 	scanf("%s",lib[i].number);  	printf("请输入姓名："); 	scanf("%s",lib[i].name);  	printf("请输入性别："); 	scanf("%s",lib[i].gender);  	printf("请输入生日："); 	scanf("%d",&lib[i].birth);  	printf("请输入院系："); 	scanf("%s",lib[i].yuanxi);  	printf("请输入职务："); 	scanf("%s",lib[i].zhiwu);  	printf("请输入宿舍号："); 	scanf("%d",&lib[i].sushehao);  	printf("请输入手机号："); 	scanf("%d",&lib[i].phonenumber);    	num++; 	printf("已输入%d个同学的信息\n",num);   }  void sort()//按学号排序 { 	int i,j; 	struct Member temp; 	for(j=1;j<=num;j++) 		for(i=0;i<num;i++) 			if(lib[i].number>lib[i+1].number) 			{ 				temp=lib[i]; 				lib[i]=lib[i+1]; 				lib[i+1]=temp; 			}      	printf("排序后结果为：\n"); 	for(i=0;i<num;i++) 			{ 				printf("该同学学号：%s",lib[i].number); 				printf("\n"); 				printf("该同学姓名：%s",lib[i].name); 				printf("\n"); 				printf("该同学性别：%s",lib[i].gender); 				printf("\n"); 				printf("该同学生日：%d",lib[i].birth); 				printf("\n"); 				printf("该同学院系：%s",lib[i].yuanxi); 				printf("\n"); 				printf("该同学职务：%s",lib[i].zhiwu); 				printf("\n"); 				printf("该同学宿舍号：%d",lib[i].sushehao); 				printf("\n"); 				printf("该同学电话号码：%d",lib[i].phonenumber); 				printf("\n"); 			}  }   void delete_member()  //删除 { 	int i=1,j; 	char s[20]; 	printf("输入所要删除同学的学号："); 	scanf("%s",&s); 	j=display(s); 	if(j!=-1) 	{ 		num--; 		for(i=j;i<num;i++) 		  { 		   lib[i]=lib[i+1]; 		  } 	printf("已删除");  	}  }  void modify() { 	int j; 	char s[20]; 	printf("请输入需要修改的学生学号"); 	scanf("%s",s); 	j=display(s); 	if(j!=-1); 	{ 		printf("\n请重新输入该学生的信息\n"); 			printf("\n请输入学号："); 			scanf("%s",lib[j].number); 			printf("修改姓名："); 			scanf("%s",lib[j].name); 			printf("请输入性别："); 			scanf("%s",lib[j].gender); 			printf("请输入生日："); 			scanf("%d",&lib[j].birth); 			printf("请输入院系："); 			scanf("%s",lib[j].yuanxi); 			printf("请输入职务："); 			scanf("%s",lib[j].zhiwu); 			printf("请输入宿舍号："); 			scanf("%d",&lib[j].sushehao); 			printf("请输入电话号码："); 			scanf("%d",&lib[j].phonenumber); 	} }   int display(char s[]) {     int k=-1,i;     if(strlen(s)==0) 	{ 	    if(num>0) 		{ 		    for(i=0;i<num;i++) 			{ 				printf("该同学学号：%s",lib[i].number); 				printf("\n"); 				printf("该同学姓名：%s",lib[i].name); 				printf("\n"); 				printf("该同学性别：%s",lib[i].gender); 				printf("\n"); 				printf("该同学生日：%d",lib[i].birth); 				printf("\n"); 				printf("该同学院系：%s",lib[i].yuanxi); 				printf("\n"); 				printf("该同学职务：%s",lib[i].zhiwu); 				printf("\n"); 				printf("该同学宿舍号：%d",lib[i].sushehao); 				printf("\n"); 				printf("该同学电话号码：%d",lib[i].phonenumber); 				printf("\n"); 			} 		} 		else 		      printf("无学生信息");    	} 	else 	{ 	   for(i=0;i<num;i++) 	   if(strcmp(s,lib[i].number) == 0) 	   {             printf("该同学学号：%s",lib[i].number); 			printf("\n"); 			printf("该同学姓名：%s",lib[i].name); 			printf("\n"); 			printf("该同学性别：%s",lib[i].gender); 			printf("\n"); 			printf("该同学生日：%d",lib[i].birth); 			printf("\n"); 			printf("该同学院系：%s",lib[i].yuanxi); 			printf("\n"); 			printf("该同学职务：%s",lib[i].zhiwu); 			printf("\n"); 			printf("该同学宿舍号：%d",lib[i].sushehao); 			printf("\n"); 			printf("该同学电话号码：%d",lib[i].phonenumber); 			printf("\n"); 			k=i; 	   }  	       if(k==-1) 		   printf("没有找到此学生");   	}  	return k; }//返回k=-1就是出错，否则返回数组下标    void search(struct Member lib[])//按学号查找 {  	char s[20]; 	printf("请输入同学学号"); 	scanf("%s",&s); 	display(s);  }    void save_t() { 	int i; 	FILE *fp; 	char fname[20]; 	printf("输入文件名（  .txt）"); 	scanf("%s",fname); 	if((fp=fopen(fname,"w"))==NULL); 	{ 		printf("文件保存失败\n"); 		return; 	} 	for(i=0;i<num;i++) 	{ 		fprintf(fp,"%s,%s,%s,%d,%s,%s,%d,%d",lib[i].number,lib[i].name,lib[i].gender,lib[i].birth,lib[i].yuanxi,lib[i].zhiwu,lib[i].sushehao,lib[i].phonenumber); 		printf("成功保存文件"); 	} 	fclose(fp); }  main() {  	int n;      system("cls");  	for(;;) 	{ 		jiemian(); 		printf("输入选项数字"); 		scanf("%d",&n); 		// while(n!=EOF&&n>0&&n<6)          switch(n) 	{     case 1: 		{ 			rush();			  			break;  		} 	case 3: 		{ 			modify(); 			break; 		} 	case 2: 		{ 			delete_member(); 			break; 		} 	case 4: 		{ 			search(); 			break; 		} 	case 5: 		{ 			display(""); 			break; 		} 	case 6: 		{ 			save_t(); 			break; 		} 	case 7: 		{ 			sort(); 			break; 		} 	case 8: 		{ 			exit(0); 		}   	}     	} }

user: user-1
content: 在你的 void rush函数里面，是一个while（1）死循环，所以，你每输入完成后，又接着输入第二个。这样循环下去。 如果你只需要每次输入一个，就重新选择，你就可以把这个函数里的while循环去掉。或者在循环的最后面的i++后面加一句return；就可以了。你试试。

user: user-2
content: int rt = scanf("%d",&n);//检测下是是返回==1