zoukankan      html  css  js  c++  java
  • c语言文件操作

    一、c语言文件——任务

    任务一:

      你现在拥有一个数组,数组中储存着总共10个人的姓名字符串你需要为每个人创建一个txt文件,以他们的名字命名。例如: 生成 笨笨.txt文件

    任务二:

      在任务一的基础上,这次不仅仅要创建txt文件,还需要往文件中写入,每个人的学号,性别,班级,线代成绩。

    任务三:

      在任务二生成的文件中,将每个人的信息再重新读取出来,放入数组中。[要求使用结构体数组,结构体需要包含姓名,学号,性别,班级,线代成绩5个属性]

    任务四:

      试着使用一下system("cls"),system("pause")这两个命令,看看这两个命令能不能对你的程序起到一些美化的作用。拓展:上网搜索类似的其他函数,使用并解释他们的作用。

    二、c语言文件——代码

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define V 1000
    #define N 60
    #define M 45
    
    void Start_face();//初始界面
    void Mid_face_1();//控制中间界面,下同
    void Mid_face_2();
    void Scanf_number(int* p);//输入人数
    
    typedef struct {
        int score;
        char number[20], gender[20], classes[20];
    }STU_IN;
    
    typedef struct {
        int score;
        char name[20], number[20], gender[20], classes[20];
    }STU_OUT;
    
    int main(void) {
        Start_face();
        int stu_number, * p = &stu_number;
        Scanf_number(p);//输入人数
        STU_IN stu1[V];
        STU_OUT stu2[V],a;//变量a是排序交换时的过渡变量
        FILE* fp;
        char name[10][20];
        for (int i = 0; i < stu_number; i++) {//循环操作,输入信息并写入文件
            Mid_face_1();
            printf("***请输入学生信息***
    
    ");
            Mid_face_2();
            printf("-->姓名:");
            scanf("%s", name[i]);
            strcpy(stu2[i].name, name[i]);
            strcat(name[i], ".txt");
            fp = fopen(name[i], "w");
            if (fp == NULL) {
                printf("Failed to open file");
                exit(0);
            }
            printf("
    ");
            Mid_face_2();
            printf("-->学号:");
            scanf("%s", stu1[i].number);
            printf("
    ");
            Mid_face_2();
            printf("-->性别:");
            scanf("%s", stu1[i].gender);
            printf("
    ");
            Mid_face_2();
            printf("-->班级:");
            scanf("%s", stu1[i].classes);
            printf("
    ");
            Mid_face_2();
            printf("-->成绩:");
            scanf("%d", &stu1[i].score);
            fprintf(fp, "%s
    ", stu1[i].number);
            fprintf(fp, "%s
    ", stu1[i].gender);
            fprintf(fp, "%s
    ", stu1[i].classes);
            fprintf(fp, "%d
    ", stu1[i].score);
            if (fclose(fp)) {
                printf("Can not close this file!
    ");
                exit(0);
            }
            printf("
    ");
            Mid_face_2();
            system("pause");
            system("cls");
        }
        Mid_face_1();
        printf("下面将为您查看所录入的信息
    
    ");
        Mid_face_2();
        system("pause");
        system("cls");
        printf("
    
    
    ");
        for (int i = 0; i < stu_number; i++) {//循环读出信息
            if ((fp = fopen(name[i], "r")) == NULL) {
                printf("Failed to open file");
                exit(0);
            }
            fscanf(fp, "%s", stu2[i].number);
            fscanf(fp, "%s", stu2[i].gender);
            fscanf(fp, "%s", stu2[i].classes);
            fscanf(fp, "%d", &stu2[i].score);
            if (fclose(fp)) {
                printf("Can not close this file!
    ");
                exit(0);
            }
        }
        for (int i = 0; i < stu_number -1; i++) {//冒泡排序,对成绩降序排列输出
            for (int o = 0; o < stu_number - i - 1; o++) {
                if (stu2[o].score < stu2[o + 1].score) {
                    a = stu2[o];
                    stu2[o] = stu2[o + 1];
                    stu2[o + 1] = a;
                }
            }
        }
        for (int i = 0; i < stu_number; i++) {//将信息放在一个结构数组中输出
            Mid_face_2();
            printf("%-10s", stu2[i].name);
            printf("%-15s", stu2[i].number);
            printf("%-5s", stu2[i].gender);
            printf("%-10s", stu2[i].classes);
            printf("     成绩:%2d
    ", stu2[i].score);
        }
        system("pause");
        return 0;
    }
    
    void Scanf_number(int *p) {
        Mid_face_1();
        printf("您要录入信息的人数为:");
        scanf("%d", p);
        printf("
    ");
        Mid_face_2();
        system("pause");
        system("cls");
    }
    
    void Mid_face_1() {
        for (int o = 0; o < 10; o++) {
            printf("
    ");
        }
        for (int o = 0; o < M; o++) {
            printf(" ");
        }
    }
    
    void Mid_face_2() {
        for (int o = 0; o < M-9; o++) {
            printf(" ");
        }
    }
    
    void Start_face() {
        system("color fc");
        printf("");
        for (int i = 0; i < N; i++) {
            printf("");
        }
        printf("");
        for (int i = 0; i < 13; i++) {
            printf("");
            for (int o = 0; o <120; o++) {
                printf(" ");
            }
            printf("");
        }
        printf("");
        for (int i = 0; i < 35; i++) {
            printf("-");
        }
        printf(">>>>>>>>>>欢迎进入学生信息及成绩录入系统<<<<<<<<<<");
        for (int i = 0; i < 35; i++) {
            printf("-");
        }
        printf("");
        for (int i = 0; i < 13; i++) {
            printf("");
            for (int o = 0; o <120 ; o++) {
                printf(" ");
            }
            printf("");
        }
        printf("");
        for (int i = 0; i < N; i++) {
            printf("");
        }
        printf("");
        system("pause");
        system("cls");
    }
     

    三、c语言文件——展示效果

    1、初始界面

     

     2、录入界面

    3、输出界面

     

     

    4、文件创建效果

     

     

     三、c语言文件——总结

      system("pause");//暂停程序,按任意键继续;

       system("cls");//清空黑框界面;    

      system("color 12");//改变黑框颜色,不同数字不同颜色,0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色,其中color后面的第一个数是背景色代号,第二个数是前景色代号。

  • 相关阅读:
    树状数组&线段树
    8月7日小练
    8月6日小练
    LID&LDS 的另外一种算法
    LCS,LIS,LCIS
    8-11-Exercise
    8-10-Exercise
    线段树
    8-7-Exercise
    8-6-Exercise
  • 原文地址:https://www.cnblogs.com/zx224569/p/12073221.html
Copyright © 2011-2022 走看看