Chapter5-标准I/O库(上)-「APUE读书笔记」
来源:互联网 发布:属下知罪by枯目结局 编辑:程序博客网 时间:2024/05/16 00:58
- 流和FILE对象
1、标准I/O库不同于一般的I/O函数,它们的操作是围绕流而不是文件描述符。当用标准I/O库打开或创建一个文件时,也就是让一个流与一个文件相关联。
2、标准I/O流可用于单字节或多字节字符集,这由流的定向来决定。
3、在未定向的流上使用多字节I/O函数就将流设置为宽定向,使用单字节就将流设置为字节定向。
4、只有函数freopen(清除流定向)和fwide(设置流定向)可改变流的定向。
函数 fwide
#include<stdio.h>
#include<wchar.h>
//当mode为负,fwide将试图设置流为字节定向;为正时,设置为宽定向;为0时,返回当前定向
int fwide(FILE* fp, int mode);
当流为宽定向返回正值,字节定向返回负值,未定向返回0。
fwide不能改变已定向的流,而且没有出错返回(可通过errno获取出错)。
5、没有必要对FILE对象进行检验。
- 缓冲
1、预定义的三个流:stdin(STDIN_FILENO), stdout(STDOUT_FILENO), stderr(STDERR_FILENO)。
2、标准I/O提供三种缓冲:
全缓冲:在填满标准I/O缓冲区后才进行实际操作。
行缓冲:在输入和输出中遇到换行符时进行操作。在流涉及终端时,通常用行缓冲。
不带缓冲:标准错误流stderr。
3、默认缓冲类型:标准错误不带缓冲,指向终端的流为行缓冲,其余是全缓冲。
4、更改缓冲类型函数setbuf/setvbuf
#include<stdio.h>
//buf指定缓冲区,设置成全缓冲,部分设备会将终端相关的流设置为行缓冲,buf为NULL,则设置成不带缓冲
void setbuf(FILE* restrict fp, char* restrict buf);
//mode参数(_IOFBF/全缓冲,_IOLBF/行缓冲,_IONBF/不带缓冲)
void setvbuf(FILE* restrict fp, char* restrict buf, int mode, size_t size);
指定不带缓冲的I/O流时,忽略buf和size;如果流本身带缓冲,而buf为NULL,将自动分配适当的缓冲区,长度为BUFSIZ。
5、通常应由系统分配缓冲区,那样I/O库会在流关闭时自动释放缓冲区。
6、冲洗函数fflush
#include<stdio.h>
int fflush(FILE* fp);
此函数将未写的数据传送至内核,当fp为空时,冲洗所有输出流。
- 打开流
1、打开标准I/O流函数
#include<stdio.h>
// 打开路径为pathname的文件,成功返回文件指针,错误返回NULL
FILE* fopen(const char* restrict pathname, const char* restrict type);
//关闭(若已打开)指定流,并在其上面打开文件。返回同上。
FILE* freopen(const char* restrict pathname, const char* restrict type, FILE* restrict fp);
//使一个已有的文件描述符与流结合。返回同上。通常用于管道和网络通信。
FILE* fdopen(int fd, const char* type);
type参数值:
r/rb 为读而打开
w/wb 截断文件,或为写而创建
a/ab 追加,在文件尾写,或为写而创建
r+/r+b/rb+ 为读和写打开
w+/w+b/wb+ 截断文件,或为读和写打开
a+/a+b/ab+ 在文件尾读和写而打开或创建
2、函数fclose关闭一个打开的流
#include<stdio.h>
int fclose(FILE* fp); //成功返回0,失败返回EOF
进程正常终止,所有I/O流被冲洗并关闭。
- Chapter5-标准I/O库(上)-「APUE读书笔记」
- Chapter5-标准I/O库(中)-「APUE读书笔记」
- Chapter5-标准I/O库(下)-「APUE读书笔记」
- Chapter5-标准I/O库(补充)-「APUE读书笔记」
- APUE读书笔记 之 标准I/O库
- APUE读书笔记-第五章 标准I/O库
- 【APUE】标准I/O库
- APUE 标准I/O库
- APUE------标准I/O库
- apue:标准I/O库
- apue 第五章 标准i/o库
- APUE学习:标准I/O库
- APUE读书笔记-高级I/O
- APUE读书笔记-文件I/O
- APUE学习笔记——标准I/O库
- APUE第5章标准I/O库 笔记
- APUE学习: 第五章, 标准I/O库
- apue 第5章 标准I/O库
- POJ 1741 Tree (树分治之点分治)
- Struts2标签
- 【LeetCode从零单刷】Container With Most Water
- Android JNI使用总结(一)
- POJ - 2018 Best Cow Fences(DP)
- Chapter5-标准I/O库(上)-「APUE读书笔记」
- 我的Qt學習日記 DAY 1 Qt 简介
- 初学Struts
- 大数据处理1
- fzu 2082(树链剖分)
- 37.3 大奖赛计分
- centos6.5下用orabbix监控oracle
- 接着写某狼厂面试题目经验2015
- java集合框架