C语言文件 *** 作系统实验

C语言文件 *** 作系统实验,第1张

⭐一个很基础的文件实验,让我们初步接触文件 *** 作 ⭐C语言文件 *** 作实验:用C语言实现把n个学生的姓名,学号,英语成绩,数学成绩存到文件中计算总分并且在屏幕上显示学生信息 ⭐划重点(小细节来了) 对于文件 *** 作实现有两种方法,一种是用fscanf/fprintf函数实现,另外一种是用fwrite/fread函数实现,我的建议是用前者编写代码。

具体的原因是因为fscanf/fprintf函数创建的是文本文件,可以用编译器直接打开,而后者创建的是二进制文件,打开后会出现乱码的情况。

两种函数的具体实现方式我都会给大家介绍

⭐函数中涉及到的文件地址就是我们所要进行 *** 作的文件,复制文件地址时会有‘‘转义符号编译器会报错,我们可以用两个’'或者用’/'符号代替就可以了。


用我自己的文件举个栗子:
“D:\Stephen_Curry__.txt”
这个文件地址我们只需要修改成
"D:\Stephen_Curry__.txt"或者"D:/Stephen_Curry__.txt"就可以正常运行了。

代码如下:

第一种用fscanf/fprintf函数实现

//创建的是文本文件
#include
#include
int n;
struct student
{
    char name[100];
    char eng[20];
    int english;
    int math;
    int sum;
}stu[100],*qq,*pp;
int main()
{
    FILE *fp;
    qq=stu;
    if((fp=fopen("文件地址","wb+"))==NULL)
    {
        printf("Cannot open file,strike any key exit!");
        exit(1);
    }
    printf("intput student number:\n");
    scanf("%d",&n);
    printf("input data\n");
    //从键盘输入学生数据存入数组
    for(int i=0;i<n;i++,qq++)
    {
        scanf("%s%s%d%d",qq->name,qq->eng,&qq->english,&qq->math);
        qq->sum=qq->english+qq->math;
    }

    qq=stu;
    pp=stu;
    //把数组中学生数据粗存入文件
    for(int i=0;i<n;i++,qq++)
        fprintf(fp,"%s\t%s\t%5d%5d%5d\n",qq->name,qq->eng,qq->english,qq->math,qq->sum);
    //把文件指针重新定位到文件头
    rewind(fp);
    //从文件中读取学生数据到数组
    for(int i=0;i<n;i++,pp++)
        fscanf(fp,"%s%s%d%d%d",pp->name,pp->eng,&pp->english,&pp->math,&pp->sum);

    printf("\n\nname\tnumber     english     math     sum\n");
    qq=stu;
    for(int i=0;i<n;i++,qq++)
        printf("%s\t%s\t%5d%5d%5d\n",qq->name,qq->eng,qq->english,qq->math,qq->sum);
    fclose(fp);
    return 0;
}

第二种用fwrite/fread函数实现

//创建的是二进制文件
#include
#include
int n;
struct student
{
    char name[100];
    char eng[20];
    int english;
    int math;
    int sum;
}stu[10],*qq,*pp;
int main()
{
    FILE *fp;
    qq=stu;
    if((fp=fopen("文件地址","wb+"))==NULL)
    {
        printf("Cannot open file,strike any key exit!");
        exit(1);
    }

    printf("intput studen number:\n");
    scanf("%d",&n);
    printf("input data\n");

    //从键盘输入两个学生数据存入数组
    for(int i=0;i<n;i++,qq++)
    {
        scanf("%s%s%d%d",qq->name,qq->eng,&qq->english,&qq->math);
        qq->sum=qq->english+qq->math;
    }
    qq=stu;
    pp=stu;

    //把数组中学生数据写入文件
    fwrite(pp,sizeof(struct student),n,fp);

    //把文件指针重新定位到文件头
    rewind(fp);

    //从文件中读取学生数据到数组
    fread(qq,sizeof(struct student),n,fp);

    printf("\n\nname\tnumber     english     math     sum\n");

    for(int i=0;i<n;i++,qq++)
        printf("%s\t%s\t%5d%5d%5d\n",qq->name,qq->eng,qq->english,qq->math,qq->sum);
    fclose;
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/662302.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-18
下一篇 2022-04-18

发表评论

登录后才能评论

评论列表(0条)

保存