提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 文件IO和标准IO的区别
- 1.\r和\n的区别
- 2.缓冲
- 2.1缓冲区的概念
- 2.2.缓冲区的分类
- 3.文件IO和标准IO的区别
前言
文件IO和标准IO的区别
1.\r和\n的区别
\r 回车操作符,即让光标回到当前行的行首
\n 换行操作符,即让光标回当下一行的当前位置
在Linux操作平台上,“\r\n"和”\n"的表达效果相同,均会完成回车换行的操作,但是如果仅仅只有"\r",则只完成回车的操作而不换行,在具体代码中可以会产生新输出的内容覆盖原有内容的效果
2.缓冲
2.1缓冲区的概念
缓冲区是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区,显然缓冲区是具有一定大小的。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。
2.2.缓冲区的分类
缓冲区 分为三种类型:全缓冲、行缓冲和不带缓冲。
全缓冲
在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。全缓冲的典型代表是对磁盘文件的读写。(fwrite、fread)
行缓冲
在这种情况下,当在输入和输出中遇到换行符时,执行真正的I/O操作。这时,我们输入的字符先存放在缓冲区,等按下回车键换行时才进行实际的I/O操作。典型代表是键盘输入数据。
不带缓冲
也就是不进行缓冲,标准出错情况stderr是典型代表,这使得出错信息可以直接尽快地显示出来。
1.我们的程序中的缓存,就是你想从内核读写的缓存(数组)----用户空间的缓存
2.每打开一个文件,内核在内核空间中也会开辟一块缓存,这个叫内核空间的缓存
文件IO中的写即是将用户空间中的缓存写到内核空间的缓存中。
文件IO中的读即是将内核空间的缓存写到用户空间中的缓存中。
3.标准IO的库函数中也有一个缓存,这个缓存称为----库缓存
C库缓存的特点: 1.遇到\n 时,会将库缓存的内容写到内核缓存中,即调用了系统调用函数。 2.库缓存写满时,会调用系统调用函数,将库缓存内容写到内核缓存中(1024字节)。
3.文件IO和标准IO的区别
-
文件IO:是直接调用内核提供的系统调用函数, 头文件是unistd.h
-
标准IO:是间接调用系统调用函数,头文件是: stdio.h