C语言课件第13章-文件操作.ppt

第13章文件操作 哈尔滨工业大学计算机科学与技术学院苏小红sxh 本章学习内容 二进制文件和文本文件 文件的打开和关闭 文件的顺序读写与随机读写 标准输入输出及其重定向 VonJ NeumannArchitecture 大脑 记忆装置 Memory 眼睛和耳朵 I Odevices Wheretoputdataincomputer Howtooroutputdata I O设备 输入设备键盘 鼠标软盘 硬盘 光驱 以文件的形式 扫描仪 视频采集卡 电视卡 游戏杆 话筒 输出设备显示器 打印机软盘 硬盘 CD DVD RW 以文件的形式 音箱 单纯的输入设备或者单纯的输出设备越来越少 标准输入 输出 字符界面的操作系统一般都提供标准输入与输出设备DOS Linux UNIX 一般情况 标准输入就是键盘 标准输出就是终端显示器操作系统有能力重定向标准输入与输出 比如让文件作为标准输入 标准输出 这种重定向程序本身是感觉不到的 DOS下的标准输入 输出重定向 程序prog如下main charc while c getchar n putchar c 输入重定向progoutfile txt 流 Stream 计算机中的流的概念一般称为数据流 也叫做字节流 比特流Filestream 文件流 Videostream 视频流 andAudiostream 音频流 inspecificfield 可以倒流的数据流如果你想重新读已经读过的数据 或者要修改已经写入的数据 可以发出流控 FlowControl 命令不会倒流的数据流也很多网络上的数据流 网络和数据线等介质只有很小的数据缓冲区 没有大量存储的能力流的载体 磁盘文件 终端显示器或打印机 存储器等 外存 内存容易健忘 所以数据必须保存在 不健忘 的外存上磁盘 Magneticdisks 光盘 CD DVD U盘 FlashMemory 容量大 断电后数据不丢失 可重复使用 永久保存一般都以文件的形式给用户及应用程序使用 文件 File 文件一般指存储在外部介质上有名字的一组相关数据的集合用文件可长期保存数据 实现数据共享在C语言中 文件可泛指磁盘文件 终端显示器或打印机 程序中的文件在程序运行时由程序在磁盘上建立一个文件 通过写操作将数据存入该文件由程序打开磁盘上的某个已有文件 并通过读操作将文件中的数据读入内存供程序使用 文件 Files 与流 Streams 程序通过文件打开操作把流与设备联系起来 文件打开后 可在程序和文件之间交换数据程序通过文件关闭操作断开流与文件的联系所有流的性质都一样因为流与设备无关 所以能写入磁盘文件的同一函数也能写入另一设备 如控制台终端等文件的能力则不同如磁盘文件支持随机存取 而键盘则不能 文件的存放 Storage 可以建立若干文件目录 directory folder文件夹 在目录里保存文件同一级目录里保存的文件不能同名对使用者而言 只要知道文件的路径 path 全目录 和文件名 就能使用该文件C home Sunner main c这都是托OS的福 13 1二进制文件和文本文件 文件的类型 TypeofFiles 二进制文件是一种字节序列 没有字符变换按照数据在内存中的存储形式 二进制 存储到文件如整数123 在内存占2个字节 则文件中也占2个字节文本文件 ASCII码文件是一种字符序列 文件中存储每个字符的ASCII码如整数123在文件中占3个字节 分别存放这3个字符的ASCII码 如果存1234呢 文件的格式 atofFiles 数据必须按照存入的类型读出 才能恢复其本来面貌公开的标准格式如bmp tif gif jpg和mp3等类型的文件 有大量软件能生成和使用这些类型的文件不公开或加密的文件格式如MicrosoftWord的doc格式就不公开 所以至今没有Word以外的其他软件能完美地读出doc文件 缓冲型和非缓冲型文件系统 缓冲型文件系统指系统自动在内存中为每一个正在使用的文件开辟一个缓冲区 在读写文件时 数据先送到缓冲区 再传给C程序或外存上缓冲文件系统利用文件指针标识文件缓冲型文件系统中的文件操作 也称高级文件操作高级文件操作函数是ANSIC定义的文件操作函数 具有跨平台和可移植的能力非缓冲文件系统不会自动设置文件缓冲区 缓冲区需由程序员自己设定非缓冲文件系统没有文件指针 它使用称为文件号的整数来标识文件 13 2文件的打开和关闭 下面介绍的函数均定义在中FILE constchar filename constchar mode FILE fp C CONFIG SYS rw filename是文件名包含路径 如果不含路径 表示打开当前目录下的文件mode是打开方式常用为 r w rw 和 a 分别表示只读 只写 读写和添加 rb 表示只读二进制文件返回值为指向此文件的指针 留待以后使用如果打开失败 返回值为NULL 文件打开方式 mode 对应二进制文件 对应文本文件 文件指针 FilePointer FILE fp 是FILE型指针变量 标识一个特定的磁盘文件与文件相关联的每个流都有一个FILE类型的控制结构 定义有关文件操作的信息 用户绝对不应修改 typedefstruct shortlevel 缓冲区 满 或 空 的程度 unsignedflags 文件状态标志 charfd 文件描述符 unsignedcharhold 如无缓冲区不读字符 shortbsize 缓冲区的大小 unsignedchar buffer 数据缓冲区的位置 unsignedchar curp 指针当前的指向 unsignedistemp 临时文件指示器 shorttoken 用于有效性检查 FILE 在stdio h文件中定义 13 2文件的打开和关闭 intfclose FILE fp 把遗留在缓冲区中的数据写入文件 实施操作系统级的关闭操作同时 释放与流联系的文件控制块 以后可以重复使用这部分空间多数情况下 系统限制同时处于打开状态的文件总数 因此 打开文件前先关闭无用文件是必要的fclose函数的返回值当顺利地执行了关闭操作 返回值为0如果返回值为非零值 表示关闭时有错误一般只有驱动器中无盘或盘空间不够时才失败 关闭失败会引起数据丢失 文件的破坏和程序中的随机错误 13 3按字符读写文件 字符读写intfgetc FILE fp 从fp读出一个字符 将位置指针指向下一个字符若读成功 则返回该字符 若读到文件尾 则返回EOF EOF是一个符号常量 在stdio h中定义为 1 intfputc intc FILE fp 向fp输出字符c若写入错误 则返回EOF 否则返回c 13 3按字符读写文件 例13 1 从键盘键入一串字符 转存到磁盘文件上 例13 2 将0 127之间的ASCII字符写到文件中 然后从文件中读出并显示到屏幕上 函数feof 检查是否到达文件尾 当文件位置指针指向文件尾时 返回非0值 否则返回0值 例13 3 修改例13 2 从文件中读出字符时 判断是否为可打印字符 若是则显示该字符 否则显示其十进制ASCII码值 例13 3 修改例13 2 从文件中读出字符时 判断是否为可打印字符 若是则显示该字符 否则显示其十进制ASCII码值 为什么在输出第128个字符的ASCII码值后又输出了一个 1呢 例13 3 修改例13 2 从文件中读出字符时 判断是否为可打印字符 若是则显示该字符 否则显示其十进制ASCII码值 为什么在输出第128个字符的ASCII码值后又输出了一个 1呢 使用函数feof 时 仅当读到文件结束符时才能判断出到达文件尾 而文件结束符是一个值为 1的不可打印的控制字符 if iscntrl ch 13 3按字符读写文件 字符串读写char fgets char s intn FILE fp 从fp所指的文件中读取字符串并在字符串末尾添加 0 然后存入s 最多读n 1个字符当读到回车换行符 文件末尾或读满n 1个字符时 函数返回该字符串的首地址特例 fgets buf sizeof buf stdin int constchar s FILE fp 将字符串写入文件中若出现写入错误 则返回EOF 否则返回一个非负数 13 3按字符读写文件 例13 4 用fgets 改写例13 1程序 从键盘键入一串字符 添加到文本文件demo txt的末尾 假设文本文件demo txt中已有内容为 Iamastudent 13 4按格式读写文件 格式化读写intfscanf FILE fp constchar at fscanf fp d 6 2f 第1个参数为文件指针 第2个参数为格式控制参数 第3个参数为输出参数表列 将平均分作为STUDENT结构体的成员 使函数的接口更简洁 例13 5 修改例12 7程序 计算每个学生的4门课程的平均分 将学生的各科成绩及平均分输出到文件score txt中 例13 5 修改例12 7程序 计算每个学生的4门课程的平均分 将学生的各科成绩及平均分输出到文件score txt中 例13 5 修改例12 7程序 计算每个学生的4门课程的平均分 将学生的各科成绩及平均分输出到文件score txt中 例13 5 修改例12 7程序 计算每个学生的4门课程的平均分 将学生的各科成绩及平均分输出到文件score txt中 例13 6 在例13 5基础上 从文件score txt中读出每个学生的4门课的平均分 各科成绩及平均分 例13 6 在例13 5基础上 从文件score txt中读出每个学生的4门课的平均分 各科成绩及平均分 13 5按数据块读写文件 按数据块读写从fp所指的文件中读取数据块并存储到buffer指向的内存中buffer是待读入数块据的起始地址size是每个数据块的大小 待读入的每个数据块的字节数 count是最多允许读取的数据块个数 每个数据块size个字节 返回实际读到的数据块个数将buffer指向的内存中的数据块写入fp所指的文件 例13 7 在前几个实例基础上 计算每个学生的4门课程的平均分 将学生的各科成绩及平均分输出到文件student txt中 然后再从文件中读出数据并显示到屏幕上 例13 7 在前几个实例基础上 计算每个学生的4门课程的平均分 将学生的各科成绩及平均分输出到文件student txt中 然后再从文件中读出数据并显示到屏幕上 例13 7 在前几个实例基础上 计算每个学生的4门课程的平均分 将学生的各科成绩及平均分输出到文件student txt中 然后再从文件中读出数据并显示到屏幕上 例13 7 在前几个实例基础上 计算每个学生的4门课程的平均分 将学生的各科成绩及平均分输出到文件student txt中 然后再从文件中读出数据并显示到屏幕上 例13 7 在前几个实例基础上 计算每个学生的4门课程的平均分 将学生的各科成绩及平均分输出到文件student txt中 然后再从文件中读出数据并显示到屏幕上 例13 7 在前几个实例基础上 计算每个学生的4门课程的平均分 将学生的各科成绩及平均分输出到文件student txt中 然后再从文件中读出数据并显示到屏幕上 Questionsandanswers

c语言 文件课件,C语言课件第13章-文件操作.ppt相关推荐

  1. 计算机办公软件的课件,大学计算机基础---第4章 办公软件ppt课件.ppt

    <大学计算机基础---第4章 办公软件ppt课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<大学计算机基础---第4章 办公软件ppt课件.ppt ...

  2. C Primer Plus 第13章 文件输入/输出 13.11 编程练习答案

    2019独角兽企业重金招聘Python工程师标准>>> 1.修改程序清单13.1中的程序,使之不采用命令行参数,而是请求用户输入文件名并读入用户的响应. (程序清单13.1示范了如何 ...

  3. 苹果屏蔽更新描述文件_最新屏蔽升级TVOS 13描述文件阻止iOS更新,拒绝自动升级...

    写稿不易,关注一下我又不会怀孕. 以前的文章发布会TVOS 10.11.12的描述文件,大家也反响不错,今日更新TVOS 13的描述文件,有效期到2021年! 目前仅支持12.1以下系统. 如果你的描 ...

  4. C语言基础之13:文件输入/输出

    Tips1: 函数:fopen().getc().putc().exit().fclose() fprintf().fscanf().fgets().fputs() rewind().fseek(). ...

  5. 明解C语言入门篇_第13章_文件处理

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

  6. c语言 while 教案,c语言电子教案(刘丹)

    <c语言电子教案(刘丹)>由会员分享,可在线阅读,更多相关<c语言电子教案(刘丹)(66页珍藏版)>请在人人文库网上搜索. 1.备课序号1,2课时2使用人刘 丹上课时间2013 ...

  7. c语言程序设计文章,C语言程序设计教案文章.doc

    毕业论文毕业设计开题报告论文报告设计报告可行性研究报告 安徽新华电脑专修学院课堂教学教案 (软件工程师使用) 课程名称C语言程序设计教学对象软工专业教 材< C语言程序设计>授课内容第1章 ...

  8. c语言程序设计第四版乌云高娃,C语言程序设计教学课件作者第3版乌云高娃学习手册C语言程序设计教学课件作者第3版乌云高娃学习手册学习手册第10章文件及其应用课件.docx...

    C语言程序设计教学课件作者第3版乌云高娃学习手册C语言程序设计教学课件作者第3版乌云高娃学习手册学习手册第10章文件及其应用课件.docx 学习手册(1):文本文件的操作学习内容文本文件的操作学习目标 ...

  9. c语言程序设计第二版(张磊),C语言程序设计教程(第2版) 教学课件 张磊 第9章 文件程序设计.pdf...

    C语言程序设计 第9章 文件程序设计 <C语言程序设计>(第2版) 中国铁道出版社张磊编著 C语言程序设计(第2版)张磊编著中国铁道出版社 第9章 文件程序设计 9.1 文件概述 9. ...

最新文章

  1. ASP.NET获取IP的方法
  2. 北邮OJ 1010. 16校赛-Binary Strings
  3. 如何选择免费网站监测工具?国外mon.itor.us还是国内监控宝!
  4. jq遍历子元素_leetcode第196周赛第三题统计全 1 子矩形
  5. python 字典默认会引用 除非深拷贝
  6. wireshark_Couldn’t run /usr/sbin/dumpcap in child process: Permission denied
  7. 470.用Rand7()实现Rand10()
  8. 新 Nsight Graph、Nsight Aftermath 版本中的性能提升和增强功能
  9. 华为ensp安装包及安装教程(详细版)
  10. mhdd测试hdd硬盘软件,HDD坏道检测软件比较(DiskGenius/HdTunePro/MHDD等)
  11. ESP8266-Arduino编程实例-SHT20温湿度传感器驱动
  12. ASP.NET 学习路线图
  13. unity自动生成敌人_敌人的自动生成 - Unity脚本编程 — Project 2:慕课英雄 MOOC HERO(第三人称射击简易版) | Coursera...
  14. JavaScript高程三----(基础一)
  15. php+条形码在线怎么生成,php实现在线生成条形码示例分享(条形码生成器)
  16. 怎么跨网段用计算机名访问,如何在不同的网段上互相访问
  17. 使用形态学提取连续背景的断层(erosion_rectangle1算子)
  18. Oracle中的日期时间函数
  19. Android一键换肤原理简述
  20. c语言case什么,switch

热门文章

  1. 百度专网地图,助力中国联通智慧运营
  2. Rgui控制台中的字体能调吗?
  3. 项目竞标书编写--精大
  4. 如何写好一份投标书技术部分的感悟
  5. 教资试讲-10分钟快速教案模版
  6. linx下mysql
  7. 微前端:无界wujie简单上手
  8. android 快盘接口,金山快盘Android正式版今日上线
  9. 小米电视的网页和珠宝的网页
  10. python 阴阳师 识别图像_Python爬虫练习:爬取阴阳师高清大图