Linux学习记录(三)-----文件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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值