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("***请输入学生信息***\n\n");
        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("\n");
        Mid_face_2();
        printf("-->学号:");
        scanf("%s", stu1[i].number);
        printf("\n");
        Mid_face_2();
        printf("-->性别:");
        scanf("%s", stu1[i].gender);
        printf("\n");
        Mid_face_2();
        printf("-->班级:");
        scanf("%s", stu1[i].classes);
        printf("\n");
        Mid_face_2();
        printf("-->成绩:");
        scanf("%d", &stu1[i].score);
        fprintf(fp, "%s\n", stu1[i].number);
        fprintf(fp, "%s\n", stu1[i].gender);
        fprintf(fp, "%s\n", stu1[i].classes);
        fprintf(fp, "%d\n", stu1[i].score);
        if (fclose(fp)) {
            printf("Can not close this file!\n");
            exit(0);
        }
        printf("\n");
        Mid_face_2();
        system("pause");
        system("cls");
    }
    Mid_face_1();
    printf("下面将为您查看所录入的信息\n\n");
    Mid_face_2();
    system("pause");
    system("cls");
    printf("\n\n\n");
    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!\n");
            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\n", stu2[i].score);
    }
    system("pause");
    return 0;
}

void Scanf_number(int *p) {
    Mid_face_1();
    printf("您要录入信息的人数为:");
    scanf("%d", p);
    printf("\n");
    Mid_face_2();
    system("pause");
    system("cls");
}

void Mid_face_1() {
    for (int o = 0; o < 10; o++) {
        printf("\n");
    }
    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("丨\n");
    for (int i = 0; i < 13; i++) {
        printf("");
        for (int o = 0; o <120; o++) {
            printf(" ");
        }
        printf("丨\n");
    }
    printf("");
    for (int i = 0; i < 35; i++) {
        printf("-");
    }
    printf(">>>>>>>>>>欢迎进入学生信息及成绩录入系统<<<<<<<<<<");
    for (int i = 0; i < 35; i++) {
        printf("-");
    }
    printf("丨\n");
    for (int i = 0; i < 13; i++) {
        printf("");
        for (int o = 0; o <120 ; o++) {
            printf(" ");
        }
        printf("丨\n");
    }
    printf("");
    for (int i = 0; i < N; i++) {
        printf("");
    }
    printf("丨\n\n");
    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后面的第一个数是背景色代号,第二个数是前景色代号。

posted @ 2019-12-20 15:13  明旭·  阅读(308)  评论(0编辑  收藏  举报