linux编程-标准IO

标准IO简介
1. 标准IO与三种缓冲区关联:
(1)全缓冲
通过标准IO对文件(或设备)进行操作时,通常缓冲区满之后,才会进行实际的IO操作(即写到内核)。对文件进行操作时通常使用全缓冲。
(2)行缓冲
通过标准IO对文件(或设备)进行操作时,通常缓冲区满之后,或者遇到换行符时,才会进行实际的IO操作(即写到内核)。标准输入输出通常使用行缓冲。
(3)无缓冲
每次操作通过标准IO函数操作时,都会直接与内核交互操作。标准错误通常使用无缓冲,以尽快显示错误消息。

2. 标准IO流的定向:
标准IO流支持单字节定向和多字节定向,即设置读取一个字符时,是按照单字节读取还是按多字节(宽字节)读取。关于流的定向,有以下特征:
(1)在未定向的流上,调用单字节IO函数,将把流设置为单字节定向;在未定向的流上调用多字节IO函数,将把流设置为多字节定向。
(2)在未定向的流上,调用fwide函数,设置流的定向。
#include <wchar.h>
        int fwide(FILE *stream, int mode);
(3)在已定向的流上调用fwide(file, 0) 查询流的定向
(4)调用freopen清除流的定向
#include <stdio.h>
FILE *fopen(const char *path, const char *mode);
FILE *fdopen(int fd, const char *mode);  
FILE *freopen(const char *path, const char *mode, FILE *stream); 

3. 修改一个流的缓冲
#include <stdio.h>
void setbuf(FILE *stream, char *buf);
void setbuffer(FILE *stream, char *buf, size_t size);
void setlinebuf(FILE *stream);
int setvbuf(FILE *stream, char *buf, int mode, size_t size);
通常可以修改缓冲的大小,缓冲的类型,自己创建缓冲或者让IO负责创建缓冲

4. 冲洗缓冲
#include <stdio.h>
int fflush(FILE *stream);
当参数为NULL时,将导致所有缓冲被冲洗。

5. 流的读写特征
在未进行冲洗,定位等操作的情况下,一般读未到文件末尾,不能进行写(输出);
在写时,如果调用冲洗,定位等操作,一般不能读(输入)
简单的说,就是读写之间,需要有定位操作或fflush操作,根据实际的测试,该限制在(ubuntu下无效)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值