c语言文件

完整代码块展示:

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student_information
{
    char name[10];
    char  stu_ID[20];
    char sex[10];
    char class_[10];
    char score[20];
}s[10],a[10];
int main() {
    system("color E1");//改变cmd窗口颜色及前景色
    //建立含有十个人名字的二维数组
    char name1[10][200] = { {"伊杰"},{"张三"},{"李四"},{"漆靖"},{"绍杰"},{"曾纪"},{"省龙"},{"许慎"},{"赵五"},{"欧阳"} };
    int i, n;
    char item[100] = { "学号   性别   班级       线代成绩" };
    for (i = 0;i < 10;i++) {
        strcpy(s[i].name, name1[i]);
        strcat(name1[i], ".txt");//使创建的文件为txt格式
    }
    FILE* fp;//创建并打开以姓名命名的文件文档,并检查打开是否成功
    for (i = 0;i < 10;i++) {
        if (( fp = fopen(name1[i],"w+")) == NULL ) {
            printf("file can not open!");
            exit(0);
        }
        fprintf(fp, "%s", item);//第一行依次录入  学号   性别   班级       线代成绩 
        if (fclose(fp)) {
            printf("file close error!");//关闭文件并检验
            exit(0);
        }
    }
    printf("           #####################################################          \n");
    printf("                                                                          \n");
    printf("                             学生信息管理系统                             \n");
    printf("                               欢迎您的使用!                             \n");
    printf("                              请按任意键继续                            \n");
    printf("                                                                        \n");
    printf("           *****************************************************            \n");
    system("pause");
    system("cls");
    printf("请按:学号  性别   班级   线代成绩的顺序依次录入相关信息");
    for (i = 0;i < 10;i++) {
        printf("\n%s:  ", s[i].name);
        scanf("%s %s %s %s", s[i].stu_ID, s[i].sex, s[i].class_, s[i].score);//按顺序依次录入学生信息
        if ((fp = fopen(name1[i], "a+")) == NULL) {
            printf("file open error!");
                exit(0);
        }
        fprintf(fp, "\n%s   %s    %s    %s",s[i].stu_ID, s[i].sex, s[i].class_, s[i].score);
        fclose(fp);
    }
    printf("录入成功\n");
        system("pause");//使程序在此暂停
        system("cls");//清屏
        printf("                  下面请查看录入的学生成绩                   \n");
        for (i = 0;i < 10;i++) {
            if ((fp = fopen(name1[i], "a+")) == NULL) {
                printf("file open error!");
                exit(0);
            }
            fscanf(fp, "%*[^\n]");//读取文件时跳过第一行
            fscanf(fp, "%s   %s    %s    %s",a[i].stu_ID, a[i].sex, a[i].class_, a[i].score);//按顺序依次读取文件内容
            fclose(fp);
        }
        for (i = 0;i < 10;i++) {
            printf("%s: %s   %s   %s   %s\n", s[i].name,a[i].stu_ID,a[i].sex,a[i].class_,a[i].score);//输出学生相关信息
        }
    return 0;

}

任务一:

创建十个以姓名命名的文件文档

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student_information
{
    char name[10];
    char  stu_ID[20];
    char sex[10];
    char class_[10];
    char score[20];
}s[10],a[10];
int main() {
    system("color E1");//改变cmd窗口颜色及前景色
    //建立含有十个人名字的二维数组
    char name1[10][200] = { {"伊杰"},{"张三"},{"李四"},{"漆靖"},{"绍杰"},{"曾纪"},{"省龙"},{"许慎"},{"赵五"},{"欧阳"} };
    int i, n;
    char item[100] = { "学号   性别   班级       线代成绩" };
    for (i = 0;i < 10;i++) {
        strcpy(s[i].name, name1[i]);
        strcat(name1[i], ".txt");//使创建的文件为txt格式
    }
    FILE* fp;//创建并打开以姓名命名的文件文档,并检查打开是否成功
    for (i = 0;i < 10;i++) {
        if (( fp = fopen(name1[i],"w+")) == NULL ) {
            printf("file can not open!");
            exit(0);
        }
        fprintf(fp, "%s", item);//第一行依次录入  学号   性别   班级       线代成绩 
        if (fclose(fp)) {
            printf("file close error!");//关闭文件并检验
            exit(0);
        }
    }

c语言文件

 

 

c语言文件

 

 任务二:

用文件写入每个人的学号,性别,班级,线代成绩

printf("           #####################################################          \n");
    printf("                                                                          \n");
    printf("                             学生信息管理系统                             \n");
    printf("                               欢迎您的使用!                             \n");
    printf("                              请按任意键继续                            \n");
    printf("                                                                        \n");
    printf("           *****************************************************            \n");
    system("pause");
    system("cls");
    printf("请按:学号  性别   班级   线代成绩的顺序依次录入相关信息");
    for (i = 0;i < 10;i++) {
        printf("\n%s:  ", s[i].name);
        scanf("%s %s %s %s", s[i].stu_ID, s[i].sex, s[i].class_, s[i].score);//按顺序依次录入学生信息
        if ((fp = fopen(name1[i], "a+")) == NULL) {
            printf("file open error!");
                exit(0);
        }
        fprintf(fp, "\n%s   %s    %s    %s",s[i].stu_ID, s[i].sex, s[i].class_, s[i].score);
        fclose(fp);
    }
    printf("录入成功\n");
        system("pause");//使程序在此暂停
        system("cls");//清屏

 

 

 

c语言文件

 

 

 c语言文件

 

 c语言文件

 

c语言文件

任务三:

用文件读取相关信息,并将其放在数组中

printf("                  下面请查看录入的学生成绩                   \n");
        for (i = 0;i < 10;i++) {
            if ((fp = fopen(name1[i], "a+")) == NULL) {
                printf("file open error!");
                exit(0);
            }
            fscanf(fp, "%*[^\n]");//读取文件时跳过第一行
            fscanf(fp, "%s   %s    %s    %s",a[i].stu_ID, a[i].sex, a[i].class_, a[i].score);//按顺序依次读取文件内容
            fclose(fp);
        }
        for (i = 0;i < 10;i++) {
            printf("%s: %s   %s   %s   %s\n", s[i].name,a[i].stu_ID,a[i].sex,a[i].class_,a[i].score);//输出学生相关信息
        }
    return 0;

}

c语言文件

 

 

任务四:

在网上查找并使用了一些system函数

system类函数:

system("cls"):清屏,适当使用使程序界面整洁。

system("color xy"):改变cmd窗口背景色与前景色,x对应前景色,y对应背景色;具体颜色代码如下:

0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色

system("pause"):冻结屏幕,便于观察程序的执行结果;

system("date"):显示或设置日期。

system("mode con cols=x lines=y"):设置窗口高度宽度,x为高度,y为宽度。

system("title 标题");//设置cmd窗口标题

总结:

刚开始看到文件操作时,几乎都不知道怎么下手,后来靠看网课,查百度逐步掌握了一些文件操作。

1、学会了一些文件基本操作,如"w","a"等,最后一定要记得关闭文件。

2、学会了一些system命令,使得程序界面更美观、简洁。

3、通过这次作业,我感受到了自主学习的重要性,多学多练,才能提高水平。

上一篇:c#中通过事件实现按下回车跳转控件


下一篇:【C++基础】003-生日贺卡改良