A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
一个简单的系统,做学生信息管理系统的可以作为参考,也适合c入门学习研究

*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN 2

//定义结构体类型
struct Student{

    int ID;
    char name[20];
    float score;

};

int main(int argc, const char * argv[]) {

    //定义结构体数组变量,存储输入的学生信息
    struct Student stu[LEN];

    for (int i = 0; i < LEN; i++) {

        printf("请输入第%d个学生的ID: ",i+1);
        scanf("%d",&stu.ID);
        getchar();
        printf("请输入第%d个学生的姓名: ",i+1);
        gets(stu.name);
        printf("请输入第%d个学生的成绩: ",i+1);
        scanf("%f",&stu.score);

    }

    //设置保存信息的文件名
    char *filename="sturct.data";

    //以二进制读写的形式打开文件
    FILE *fp = fopen(filename,"wb+");

    //判断文件是否打开成功
    if (fp!=NULL) {

        printf("打开文件成功,正在写入...\n");

        //以循环的方式将输入的信息保存到文件中
        for (int i = 0; i < LEN; i++) {

            //以数据块的形式将结构体写入文件中
            fwrite(&stu, sizeof(stu), 1, fp);

        }

        printf("成功写入!\n");


    }else{

        printf("打开文件失败!按任意键退出...\n");
        getchar();

        //如果打开文件失败,则退出程序
        exit(1);

    }

    //定义结构体变量数组,保存从文件中读入的信息
    struct Student stu2[LEN];

    while (1) {

        //提示操作界面
        printf("\n*************************\n");
        printf("*****   1.读取文件   *****\n");
        printf("*****   2.退出      *****\n");
        printf("*************************\n");

        printf("请输入你的选择:");

        //定义变量,接收用户的输入
        int op;

        scanf("%d",&op);

        if (op == 1) {

            //将文件读写指针重置到文件头
            rewind(fp);

            for (int i = 0; i < LEN; i++) {

                //以数据块的形式对文件进行读取
                fread(&stu2, sizeof(stu2), 1, fp);

            }

            printf("读取文件成功!\n");

            break;

        }else if(op == 2){

            printf("程序退出!\n");
            return 0;

        }else{

            printf("你的输入无效,请重新输入!\n");

        }


    }

    //关闭文件
    fclose(fp);

    printf("%4s----%4s----%4s\n","ID","name","score");

    //以遍历的方式将从文件中读入的信息进行打印
    for (int i = 0; i < LEN; i++) {


        printf("%d----%s----%.1f\n",stu2.ID,stu2.name,stu2.score);

    }


    return 0;
}


2 个回复

倒序浏览
学习一下
回复 使用道具 举报
顶下{:2_30:}{:2_32:}{:2_33:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马