又是文件操作,写入和读取的内容不同。
问题,性别和成绩法显示。#include<stdio.h>
void menu();
void entry();
void check();
struct student
{
char name;
int id;
char sex;
int scores;
}P1;
int main()
{
while(1)
{
menu();
int a,ex=0;
scanf("%d",&a);
switch(a)
{
case 0:return 0;
case 1:entry();break;
case 2:check();break;
case 3:entry();break;
case 4:entry();break;
default:ex=1;
}
getchar();
if(ex)
printf("提示:输入错误,请重新输入\n");
}
}
void menu()
{
printf("**************************\n");
printf("***学生成绩管理系统***\n");
printf("*** 1,录入学生成绩 ***\n");
printf("*** 2,查看学生成绩 ***\n");
printf("*** 3,学生成绩排序 ***\n");
printf("*** 4,删除学生成绩 ***\n");
printf("*** 5,修改学生成绩 ***\n");
printf("*** 0,退出管理系统 ***\n");
printf("**************************\n");
}
void entry()
{
printf("当前功能:录入学生成绩\n");
printf("请输入 姓名 学号 性别 成绩\n");
FILE *fp;
fp=fopen("score.dat","a+");
scanf("%s%d%c%d",P1.name,&P1.id,P1.sex,&P1.scores);
fwrite(&P1,sizeof(P1),1,fp);
fclose(fp);
getchar();
}
void check()
{
FILE *fp;
fp=fopen("score.dat","r");
rewind(fp);
printf("姓名\t 学号\t 性别\t 成绩\t\n");
while(!feof(fp))
{
fread(&P1,sizeof(P1),1,fp);
if(!feof(fp))
printf("%s\t %d\t %s\t %d\n",P1.name,P1.id,P1.sex,P1.scores);
}
fclose(fp);
}
问题,性别和成绩法显示。 我是直接创建一个文件在把文件的内容直接复制过去的 你会不会输入时格式搞错了 void entry()
{
printf("当前功能:录入学生成绩\n");
printf("请输入 姓名 学号 性别 成绩\n");
FILE *fp;
fp=fopen("socre.txt","a+");
scanf("%s%d%s%d",P1.name,&P1.id,P1.sex,&P1.scores);//性别也应该用%s
fwrite(&P1,sizeof(P1),1,fp);
fclose(fp);
getchar();
} void entry()
{
printf("当前功能:录入学生成绩\n");
printf("请输入 姓名 学号 性别 成绩\n");
FILE *fp;
fp = fopen("score.dat", "a+");
scanf("%s %d %s %d", P1.name, &P1.id, &P1.sex, &P1.scores); // 这里 性别应该是%s 而且 在 P1.sex 前面 你忘了加 & 号所以会导致性别输入不进去。
fwrite(&P1, sizeof(P1), 1, fp);
fclose(fp);
getchar();
} c++的我会
页:
[1]