我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C语言I/O流设计实例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C语言I/O流设计实例分析

这篇文章主要介绍了C语言I/O流设计实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言I/O流设计实例分析文章都会有所收获,下面我们一起来看看吧。

    前言

    文件的读取和写入是使用的是fscanffprintf两个函数,C语言中文件读取的函数不止这两个。文章中采用读取文件的方式有两个,输入行数和使用EOF判断文件末尾。 %s进行读取时不需要使用取址符&,主要是用于输入字符数组。

    环境CodeBlocks 文本阅读软件NotePadd++

    一、题目

    实验 I/O流设计

    一、 实验目的:

    熟悉文件流类的使用,掌握文件的打开、读写、关闭操作。

    二、 实验时间:

    三、 实验地点:

    四、 实验内容:

    1.输入任意多个学生的数据(学号,姓名,成绩),将数据存放在student.dat文件中,然后从该文件中读出所有数据并显示。

    2.编程将2个文件的内容连成一个文件。

    3.编写程序,给一个文本文件加上行号后存到另外一个文件中。

    五、实验要求:在上机前写出全部源程序;

    六、实验结果分析:

    二、代码及效果

    [1]. 第一问

    C语言I/O流设计实例分析

    C语言I/O流设计实例分析

    • 使用两个文件指针,file1和file2指针分别用于写文件和读取文件,操作的都是student.dat文件。

    • student.dat文件不需要提前创建

    • 使用了一个结构体数组存储学生的学号、姓名、成绩的信息。

    • 在输入学生数,将学生数作为文件的第一行以便之后的读取

    • 在控制台输入每个学生信息的同时,使用file1指针将当前的学生数据存入文件

    • 需要注意的是存入文件时,不会自动换行,所以需要在信息末尾添加一个换行符

    • 因为读取文件时必须保证文件已存在,所以在关闭file1指针之后才使用fopen函数

    • 之后就是根据第一行的学生个数,读取学生的信息并显示

    #include<stdio.h>
    struct student{
        char number[20];//学号
        char name[20];//姓名
        int score;//成绩
    }stu[100];//学生结构体数组
    int main()
    {
        FILE *file1 = fopen("student.dat","w");//文件指针,写
        FILE *file2;//文件指针,读
        int i;
        int num = 0;//学生个数
        printf("学生个数:");
        scanf("%d",&num);
        fprintf(file1,"%d
    ",num);//将学生个数放在文件首行
        for(int i = 0;i < num;i++){//输入学生信息
            printf("第%d位学生
    ",i+1);
            printf("学号: ");
            scanf("%s", stu[i].number);//学号
            printf("姓名: ");
            scanf("%s", stu[i].name);//姓名
            printf("成绩: ");
            scanf("%d", &stu[i].score);//成绩
            //存入文件
            fprintf(file1,"%s %s %d
    ",stu[i].number,stu[i].name,stu[i].score);
        }
        fclose(file1);//关闭文件指针
        file2 = fopen("student.dat","r");//读取文件
        fscanf(file2,"%d",&num);//读取第一行的学生个数
        //printf("%d
    ",num);
        for(int i = 0;i < num;i++){//显示文件的数据
            //局部变量
            char number[20];
            char name[20];
            int score;
            //获取当前行的数据
            fscanf(file2,"%s",number);
            fscanf(file2,"%s",name);
            fscanf(file2,"%d",&score);
            //打印
            printf("第%d位学生: %s %s %d
    ",i+1,number,name,score);
        }
        fclose(file2);
        return 0;
    }

    [2]. 第二问

    C语言I/O流设计实例分析

    C语言I/O流设计实例分析

    C语言I/O流设计实例分析

    C语言I/O流设计实例分析

    C语言I/O流设计实例分析

    • 刚开始时student1.dat和student2.dat必须已存在,student3.dat是之后合并数据产生的文件不需要提前创建。

    • 先是对student1.dat文件进行读取,存储到结构体数组stu1中

    • 再对student2.dat文件进行读取,存储到结构体数组stu2中

    • 将行数存到student3.dat文件的第一行

    • 然后分别遍历stu1和stu2结构体数组,存入数据

    #include<stdio.h>
    struct student{
        char number[20];//学号
        char name[20];//姓名
        int score;//成绩
    }stu1[100],stu2[100];//学生结构体数组
    int main()
    {
        int i,num1,num2;
        char file_name1[20];
        char file_name2[20];
        char file_name3[20];
        FILE *file1,*file2,*file3;//文件指针
        file1 = fopen("student1.dat","r");//读取文件1
        file2 = fopen("student2.dat","r");//读取文件2
        file3 = fopen("student3.dat","w");//写入文件3
        //获取文件1内容
        fscanf(file1,"%d",&num1);//读取第一行的学生个数
        for(int i = 0;i < num1;i++){
            fscanf(file1,"%s",stu1[i].number);
            fscanf(file1,"%s",stu1[i].name);
            fscanf(file1,"%d",&stu1[i].score);
            //printf("第%d位学生: %s %s %d
    ",i+1,stu1[i].number,stu1[i].name,stu1[i].score);
        }
        //获取文件2内容
        fscanf(file2,"%d",&num2);//读取第一行的学生个数
        for(int i = 0;i < num2;i++){
            fscanf(file2,"%s",stu2[i].number);
            fscanf(file2,"%s",stu2[i].name);
            fscanf(file2,"%d",&stu2[i].score);
            //printf("第%d位学生: %s %s %d
    ",i+1,stu2[i].number,stu2[i].name,stu2[i].score);
        }
        //写入文件3
        fprintf(file3,"%d
    ",num1+num2);
        for(int i = 0;i < num1;i++){//遍历stu1数组
            fprintf(file3,"%s %s %d
    ",stu1[i].number,stu1[i].name,stu1[i].score);
        }
        for(int i = 0;i < num1;i++){//遍历stu2数组
            fprintf(file3,"%s %s %d
    ",stu2[i].number,stu2[i].name,stu2[i].score);
        }
        //printf("已将student1.dat和student2.dat内容存入student3.dat");
        printf("复制成功!");
        fclose(file1);
        fclose(file2);
        fclose(file3);
        return ;
    }

    [3]. 第三问

    C语言I/O流设计实例分析

    C语言I/O流设计实例分析

    C语言I/O流设计实例分析

    C语言I/O流设计实例分析

    • EOF是文件结束的标志,即End OF File,如果你读取到的字符串等于EOF就表示读取到了文件的末尾,就可以退出遍历读取的操作。

    • 使用到了strcpy()函数用于复制字符数组的内容到另一个字符数组,第一个参数表示的是目标字符数组,第二个参数是需要复制原字符数组。

    • 使用了死循环对文件进行遍历,使用一个局部的字符数组str存储当前行数据

    • 当执行了if语句后,会做两件事,一是将当前行数据存储到str数组,二是判断是否读取到文件末尾

    • 当读取结束就提示,并break出死循环。

    • 否则就将str字符数组复制给结构体数组t的下标为num的str字符数组中。

    • 然后下标num自加,之后对结构体数组t的遍历范围就是[0, num)

    • 遍历结构体数组,同时对文件stu2.dat文件进行写入的操作。

    • 由于下标是从0开始的,所以行数就等于i+1

    #include<stdio.h>
    #include<string.h>
    struct text
    {
        char str[100];//字符数组,存储每行的数据
    }t[100];//结构体数组
    int main(){
        FILE *file1 = fopen("stu1.dat","r");//文件指针,读
        FILE *file2 = fopen("stu2.dat","w");//文件指针,写
        int i,num = 0;
        //读
        while(1){//遍历文件stu1.dat
            char str[100];
            if(fscanf(file1,"%s",str)==EOF){//若读取到最后一行时
                printf("文件读取结束!
    ");
                break;
            }else{
                strcpy(t[num].str,str);//将字符数组复制到结构体数组
                num++;//定位到下一个结构体
            }
        }
        //写入文件
        for(int i = 0;i < num;i++){//遍历结构数组t
            //printf("%s
    ",t[i].str);
            fprintf(file2,"%d%s
    ",i+1,t[i].str);
        }
        fclose(file1);
        fclose(file2);
        return 0;
    }

    关于“C语言I/O流设计实例分析”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C语言I/O流设计实例分析”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    C语言I/O流设计实例分析

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    C语言i++和++i示例代码分析

    这篇文章主要讲解了“C语言i++和++i示例代码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言i++和++i示例代码分析”吧!一看就懂的i++和++i详解前言我相信很多朋友可能之前
    2023-07-05

    C语言分支语句实例分析

    这篇文章主要介绍了C语言分支语句实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言分支语句实例分析文章都会有所收获,下面我们一起来看看吧。C语言的语句C语句可分为以下五类:1. 表达式语句2. 函数调
    2023-06-30

    C语言分支句实例分析

    今天小编给大家分享一下C语言分支句实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。何为语句C语言中由一个分号;隔开的就
    2023-06-29

    C语言结构化程序设计的示例分析

    这篇文章主要为大家展示了“C语言结构化程序设计的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言结构化程序设计的示例分析”这篇文章吧。C语言是结构化的程序设计语言!结构有三大类:顺序
    2023-06-20

    C语言结构体实例分析

    这篇文章主要介绍“C语言结构体实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言结构体实例分析”文章能帮助大家解决问题。1. 动态内存管理C语言代码----->编译----->链接----
    2023-06-29

    C语言字符串实例分析

    本篇内容主要讲解“C语言字符串实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言字符串实例分析”吧!看下面这个我们熟知的也是最先学习的代码"Hello world!"这一堆的字母就是字
    2023-06-29

    C语言单链表实例分析

    今天小编给大家分享一下C语言单链表实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、移除链表元素链接直达:移除链表元
    2023-06-30

    Go语言与C语言的设计哲学对比分析

    Go语言与C语言都是广泛使用的编程语言,各自有着不同的设计哲学和特点。本文将对这两种语言的设计哲学进行对比分析,并通过具体的代码示例来展示它们之间的区别。1. 发展背景C语言作为一种古老的编程语言,由Dennis Ritchie于197
    Go语言与C语言的设计哲学对比分析
    2024-03-11

    C语言循环与分支语句实例分析

    本篇内容主要讲解“C语言循环与分支语句实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言循环与分支语句实例分析”吧!写在开始0表示假,非0表示真。1. 分支语句分支语句也叫做条件选择语
    2023-06-30

    C语言全局变量实例分析

    本篇内容主要讲解“C语言全局变量实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言全局变量实例分析”吧!我们知道,全局变量是C语言语法和语义中一个很重要的知识点,首先它的存在意义需要从
    2023-06-30

    C语言指针应用实例分析

    这篇文章主要讲解了“C语言指针应用实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言指针应用实例分析”吧!1、指针是什么指针理解的2个要点:平时口语中说的指针,通常指的是指针变量,
    2023-06-30

    C语言新手入门实例分析

    这篇文章主要介绍“C语言新手入门实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言新手入门实例分析”文章能帮助大家解决问题。一、常量顾名思义,常量就是不会发生改变的值,C语言中的常量分为以
    2023-06-30

    C语言排序算法实例分析

    这篇文章主要讲解了“C语言排序算法实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言排序算法实例分析”吧!1、直接插入排序基本思想:当插入第i(i>=1)个元素时,前面的array
    2023-06-29

    C语言数组入门实例分析

    本篇内容主要讲解“C语言数组入门实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言数组入门实例分析”吧!1.一维数组数组的定义: 数组是一组相同类型元素的集合a.一维数组的创建数组的创
    2023-06-30

    C语言指针运算实例分析

    这篇文章主要介绍“C语言指针运算实例分析”,在日常操作中,相信很多人在C语言指针运算实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言指针运算实例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧
    2023-06-30

    C语言函数使用实例分析

    这篇文章主要介绍了C语言函数使用实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言函数使用实例分析文章都会有所收获,下面我们一起来看看吧。函数的声明和定义函数声明告诉编译器有一个函数叫什么,参数是什么
    2023-06-30

    C语言指针使用实例分析

    今天小编给大家分享一下C语言指针使用实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。何为指针指针这玩意说白了,就是用来
    2023-07-02

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录