2022.08.15今天学习了I/O的基础内容,总结了一些知识点,分享给大家。

首先我们了解一下什么是I/O?

I :就是input的首字母,表示的就是输入;一般标准的输入就是数据从键盘拷贝到内存。

O:就是output的首字母,表示的就是输出;一般标准的输出就是数据从从内存拷贝到显示器。

笼统的输入和输出:

输入:数据从文件拷贝到内存--》读文件

输出:输出从内存拷贝到文件--》写文件

注意:I/O就是对文件的操作

在这我们了解一下文件的种类,到目前为止,我们了解的基本都是一些文本文件。接下来我们了解一下其他文件:

  1. :普通文件 用字母(f)表示
  2. : 目录文件  用字母(d)表示
  3. : 链接文件 用字母(l)表示
  4. :  管道文件 用字母(p)表示
  5. :   字符设备文件  用字符(c)表示
  6. :  套接字文件    用字符(s)表示
  7. :块设备文件    用字符(b)表示

至于什么文件存储什么内容,是怎样存储,各有什么意义?后面我们学到在仔细讲解

什么是标准I/O?

就是指ANSI c中定义的用于输入和输出(I/O操作)的一系列函数。

注意:1.只要操作系统有C库,就可以使用标准I/O。

  1. 标准I/O有缓冲区,文件I/O没有缓存区。
  2. 标准I/O有流,文件I/O没有流。(因为标准I/O有缓冲区,文件I/O没有缓存区。)
  3. 有缓冲区的意义:可以减少系统调用的次数。

那么什么是系统调用呢?

系统调用就是内核给系统操作的接口。(就是一组函数)

缓冲区的几种缓冲类型。

全缓存:缓冲区满、强制刷新、文件关闭、程序结束时刷新缓冲区

行缓存:遇到换行符、强制刷新、文件关闭、程序结束时刷新缓冲区

不缓存:没有缓存区

讲解此图:文件(我们写的程序)进入内核空间时,当传入内容字节数小时:可直接进入内核空间,当传入内容字节多时:先到缓冲区缓冲再进入内核空间。注意:再次期间,内核空间和文件空间两者是互不侵犯,互不干扰的。要想文件的内容写入内核空间再到硬件的硬盘,首先文件进入内核空间需要一个接口,这个接口就是系统调用(函数)。缓冲区的文件内容进入时也是要通过接口(系统调用)。到文件在硬盘往出读时,与文件往进写时一样的操作。 

此图讲解:文件一次将所有内容读到系统分配的读缓冲区,由于程序定义的buf空间只有100个字节,因此读缓冲区的内容,有序并连续的将内容读入buf空间。这个过程就叫做读入流。

写入流:与读入流一样,只不过写文件恰恰相反。

总结:打开文件,就会有缓冲区产生,也会有流出现,所以说,打开文件,就是说打开了流,读文件也叫对流进行读操作,写文件也叫对流进行写操作,关闭文件也叫关闭流。对流的操作就是对文件的操作。

打开标准I/O流的mode函数

FILE *fp=fopen(1.txt,r);

这行代码表示打开一个只读的1.txt文件。注意如果没有1.Txt文件则会打开失败。

FILE *fp=fopen(1.txt,w);

这行代码表示打开一个只写的1.txt文件。注意如果没有创建1.txt文件,就会自动创建一个1.txt文件。如果有1.txt文件并且应有内容,将会清除1.txt中所有内容。

FILE *fp=fopen(1.txt,a);

这行代码表示以附加方式打开一个可读可写文件。注意:1.txt文件存在时,不会被清除内容,要写的内容会被加到1.txt原有内容的后面。1.txt文件如果不存在时,将创建文件。

注意:fopen是打开流(打开文件)的函数。“r,w,a这些是打开什么属性文件的表示符。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值