Слияние кода завершено, страница обновится автоматически
#include <stdio.h>
#include <stdlib.h>
struct student{ /*定义学生数据结构体*/
int num;
char name[20];
char date[20];
char grade[20];
};
FILE *openfile(char *openmode){ /*打开文件*/
FILE *fp;
if((fp=fopen("stu.txt",openmode))==NULL){
printf("File open error!\n");
exit(0);
}
return (fp);
}
void writing(FILE *fp){ /*输入学生数据*/
int i,j,idx,n;
struct student stu[100],tmp;
printf("输入几位学生的数据?(<=100):\n");
scanf("%d",&n);
if(n>100){
printf("Input Error.\n");
return;
}
printf("*** 请输入%d位学生的信息 ***\n",n);
printf("学号 姓名 出生年月 班级\n");
for(i=0;i<n;i++){
scanf("%d %s %s %s",
&stu[i].num,stu[i].name,stu[i].date,stu[i].grade);
}
/******从文本读入历史数据,一同排序******/
if(fp!=NULL&&fclose(fp)){ /*关闭文件*/
printf("Can not close the file!\n");
exit (0);
}
char s_num[8],s_name[8],s_date[8],s_grade[8];
fp=openfile("r");
if(!feof(fp)) fscanf(fp,"%s %s %s %s",s_num,s_name,s_date,s_grade);
for(;;i++){
fscanf(fp,"%d %s %s %s",
&stu[i].num,stu[i].name,stu[i].date,stu[i].grade);
if(feof(fp)) break;
}
n=i;
if(fp!=NULL&&fclose(fp)){ /*关闭文件*/
printf("Can not close the file!\n");
exit (0);
}
fp=openfile("w");
//////////////////////////////////
for(j=0;j<n;j++){ /*用选择排序法对输入学生信息排序*/
idx=j;
for(i=j;i<n;i++){
if(stu[i].num<stu[idx].num){
idx=i;
}
}
if(idx!=j){
tmp=stu[idx];
stu[idx]=stu[j];
stu[j]=tmp;
}
}
fprintf(fp,"%-12s %-6s %-18s %-10s\n","学号","姓名","出生年月日","班级");
for(i=0;i<n;i++){
fprintf(fp,"%-10d %-6s %-12s %-10s\n",
stu[i].num,stu[i].name,stu[i].date,stu[i].grade);
}
printf("*** 输入结束 ***\n");
if(fclose(fp)){ /* 关闭文件 */
printf("Can not close the file!\n");
exit (0);
}
}
void show(FILE *fp){ /* 显示学生信息 */
int i;
char str[60];
printf("*** 内容如下 ***\n");
while( fgets (str, 60, fp)!=NULL ) {
puts(str);
}
printf("\n*** 显示结束 ***\n");
}
int main()
{
FILE *fp;
int choice;
// fp=openfile("a");
// fprintf(fp,"%-10s %-6s %-12s %-10s\n","学号","姓名","出生年月日","班级");
while(1){
printf("#######################################\n"); /*显示操作提示信息*/
printf("## 请输入: ##\n");
printf("## 1.输入学生数据,并保存。 ##\n");
printf("## 2.打开学生数据文件,显示学生信息.##\n");
printf("## 3.退出。 ##\n");
printf("#######################################\n");
scanf("%d",&choice);
if (choice==3){ /*若输入3,退出*/
printf("*** EXIT ***\n");
break;
}
switch(choice){
case 1: /* 若输入1,输入学生数据,并保存 */
fp=openfile("a");
writing(fp);
break;
case 2: /* 若输入2,打开学生数据文件,显示学生信息 */
fp=openfile("r");
show(fp);
break;
default:
printf("Input Error.\n"); /* 提示输入非法 */
break;
}
}
if(fp!=NULL&&fclose(fp)){ /*关闭文件*/
printf("Can not close the file!\n");
exit (0);
}
return 0;
}
/*
学号 姓 名 出生年月日 班级
20160021 李 敏 1998-09-01 soft1613
20160001 王 宏 1998-02-01 soft1614
Student number, name, date of birth, class
*/
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )