mmdee 发表于 2016-2-23 08:46:59

又是文件操作,写入和读取的内容不同。

问题,性别和成绩法显示。
#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);
}
问题,性别和成绩法显示。

q2484877 发表于 2016-2-23 11:35:05

我是直接创建一个文件在把文件的内容直接复制过去的

zlh 发表于 2016-2-23 18:23:28

你会不会输入时格式搞错了

distooy 发表于 2016-2-23 21:22:04

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();
}

gascd 发表于 2016-2-24 17:25:37

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();
}

q2484877 发表于 2016-2-25 20:37:54

c++的我会
页: [1]
查看完整版本: 又是文件操作,写入和读取的内容不同。