当前位置: 首页 > news >正文

day25-IO

三、IO

1.概念

   1.IO指intput/output

   2.Linux系统中一切皆是文件

   3.IO操作的对象是文件

2.文件

   1.一段数据的集合

   2.文件通常存放在外存中,掉段后数据不会消失

   3.分类:

①b(block,块设备文件)

   ●按块扫描信息的文件,称为块设备文件。通常存储类型的设备通常为块设备文件

   ●文件IO

②c(character,字符设备文件)

   ●按字符扫描信息的文件,称为字符设备文件。一般设备通常为字符设备文件

   ●文件IO

③d(directory,目录文件)

   ●目录文件,存放文件的文件夹

   ●目录IO/文件IO

④-(普通文件)

   ●存放信息文件

   ●标准IO/文件IO

⑤l(link,链接文件)

   ●操作文件等价于操作文件指向的文件

   ●链接IO/文件IO

⑥s(socket,套接字文件)

   ●用来进程间通信

   ●文件IO

⑦p(pipe,管道文件)

   ●用来进程间通信

   ●文件IO

3.标准IO

1.概念

通常用来操作普通文件

2.普通文件类型

   ①ASCII码文件:文件中所有内容均为能够在屏幕上显示的ASCII码字符

     ●程序、文本文件均为ASCII码文件

   ②二进制文件:文件中的所有内容均为数据对应的二进制形式存放

     ●ASCII码文件也是二进制文件

     ●图片、音视频、压缩包均为二进制文件

3.标准IO的接口:

   1.fopen/fclose

   2.fgetc/fputc

   3.fgets/fputs

   4.fscanf/fprintf

   5.fread/fwrite

   6.fseek/rewind/ftell

   7.操作步骤

①打开文件

②读写文件

③关闭文件

4.文件的打开

1.函数接口

   1.fopen

①原型:FILE  *fopen(const  char  *pathname,  const  char  *mode);

②功能:打开pathname指向字符串对应的文件,并且和它建立一个流

③参数:

pathname:要打开的文件路径字符串
mode:打开的方式
    r       只读          文件存在只读打开,文件不存在报错
    r+     读写          文件存在读写打开,文件不存在报错
    w      只写          文件存在清0,文件不存在创建,只写打开
    w+    写读          文件存在清0,文件不存在创建,写读打开
    a       追加          文件存在追加,文件不存在创建,只写打开
    a+     追加读写   文件存在追加,文件不存在创建,写读打开

④返回值:

成功返回FILE*指针
失败返回NULL

   2.fclose

①原型:int  fclose(FILE  *stream);

②功能:关闭已经打开的流

③参数:

stream:文件流指针

④返回值:

成功返回0,失败返回EOF(-1)

   3.fputc

①原型:int  fputc(int  c,  FILE  *stream);

②功能:将字符c写入流中

③参数:

c:要写入的字符
stream:文件流指针

●注:putchar()等价于fputc(ch, stdout)

④返回值:

成功返回输出的ASCII码值
失败返回EOF

   4.fgetc

①原型:int  fgetc(FILE  *stream);

②功能:读取流中的下一个字符

③参数:

stream:文件流指针

④返回值:

成功返回读到字符的ASCII码值
失败或者读到文件末尾返回EOF

●注:ch = getchar()等价于 ch = fgetc(stdin)

   5.fputs

①原型:int  fputs(const  char  *s,  FILE  *stream);

②功能:向流中写入s指向的字符串

③参数:

s:要写入的字符串的首地址
stream:文件流指针

④返回值:

成功返回非负数
失败返回EOF

●注:fputs不会多打印\n字符,puts会多打印一个\n字符

   6.fgets

①原型:char  *fgets(char  *s,  int  size,  FILE  *stream);

②功能:从流中最多读size-1个字节数据放入s指向的空间中,遇到\n读取截止

③参数:

s:存放数据空间的首地址
size:最多存放元素的个数
stream:文件流指针

④返回值:

成功返回存放数据空间的首地址
失败返回NULL
读到文件末尾返回NULL

●注:gets会去掉从终端接收的\n字符,fgets不会去掉从终端接收的\n字符

   7.fprintf

①原型:int  fprintf(FILE  *stream,  const  char  *format, ...);

②功能:将格式化的字符串打印在流中

③参数:

stream:文件流指针
format:格式化的字符串
...:参数

④返回值:

成功返回打印字符的个数
失败返回负数

   8.fscanf

①原型:int  fscanf(FILE  *stream,  const  char  *format, ...);

②功能:从流中接收格式化的字符串

③参数:

stream:文件流指针
format:格式化字符串
...:参数

④返回值:

成功返回匹配的输入控制符的个数
失败返回EOF
读到文件末尾返回EOF
2.已经打开的三个特殊的流

①stdin:标准输入流

②stdout:标准输出流

③stderr:标准出错流

   ●printfputsputchar都是通过stdout流实现在终端信息打印

   ●scanfgetsgetchar都是通过stdin流实现获得终端信息

   ●perror通过stderr流实现在终端打印出错信息

5.标准IO的缓存

1.标准IO缓存

   1.标准IO是一种有缓的IO

   2.效率高

   3.实时性差

2.缓存的类型

   1.全缓存(4k):

缓存区满刷新缓存

刷新条件:

   ○缓存区满4k刷新

   ○fflush函数强制刷新

   ○fclose或者程序关闭刷新

与文件建立的缓存一般为全缓存

   2.  行缓存  (1k):

遇到\n刷新缓存区

刷新条件:

   ○缓存区满1k刷新

   ○遇到\n刷新

   ○fflush函数强制刷新

   ○fclose或者程序关闭刷新

与终端建立的缓存一般为行缓存(stdinstdout均为行缓存)

   3.   不缓存  (0k):

●立即刷新不缓存

●刷新条件:

   ○不缓存立即刷新

●出错处理或者人机交互一般使用不缓存(stderr不缓存)

man手册

1.章节

  1.标准命令

  2.系统调用

  3.库函数

  4.设备说明

  5.文件格式

  6.娱乐

  7.杂项

  8.管理员命令

2.使用示例

 man   章节号   搜索条件

http://www.dtcms.com/a/326657.html

相关文章:

  • gateway进行接口日志打印
  • 刘强东的AI棋局
  • 高并发内存池 内存释放回收(6)
  • 如何生成测试报告
  • 加载模型使用torch_dtype参数来显式指定数据类型
  • 美股期权历史波动率数据研究分析教程
  • 基于STM32单片机超声波测速测距防撞报警设计
  • c# 线程的基础教学(winform 电梯模拟)
  • C9800 ISSU升级
  • 【Java工具】Java-sftp线程池上传
  • ADK[5]调用外部工具流程
  • (附源码)基于Spring Boot的4S店信息管理系统 的设计与实现
  • 每日算法刷题Day61:8.11:leetcode 堆11道题,用时2h30min
  • 【功能测试】软件集成测试思路策略与经验总结
  • HTML应用指南:利用GET请求获取全国vivo体验店门店位置信息
  • 字节后端面经
  • 内网依赖管理新思路:Nexus与CPolar的协同实践
  • Linux-FTP服务器搭建
  • 【图像算法 - 12】OpenCV-Python 入门指南:图像视频处理与可视化(代码实战 + 视频教程 + 人脸识别项目讲解)
  • DHCP服务配置与管理实战指南
  • CRMEB多商户系统(Java)v2.0更新预告:区域管理+预约商品,激活本地商业新活力!
  • NTC热敏电阻、压敏电阻和保险丝工作原理
  • FFmpeg - 基本 API大全(视频编解码相关的)
  • python每日一题练习 两个数组的交集 非常简单
  • GCN: 图卷积网络,概念以及代码实现
  • 【LeetCode刷题集】--排序(三)
  • Protocol Buffers (protobuf) API 接口完全指南
  • maven项目打包成sdk后在别的项目使用
  • 从0开始的中后台管理系统-5(部门管理以及菜单管理页面功能实现)
  • 【科研绘图系列】R语言绘制散点图折线图误差棒组合图