源码先锋

源码先锋

Linux C编程之fopen

admin 169 111

【1】系统调用和库函数

●系统调用:由系统直接提供的函数接口

●库函数:由开发人员提供的函数接口

【2】标准IO和文件IO

●标准IO:由库函数提供的输入输出函数接口

◆优点:减少频繁操作硬件(系统调用),有利于保护硬件

◆缺点:缓存区的数据可能丢失

●文件IO:由系统调用提供的输入输出函数接口

◆优点:数据不会丢失

◆缺点:频繁操作硬件,不利于保护硬件

【3】文件类型

●bcd-lsp

【4】不仅在UNIX系统,在很多操作系统上都实现了标准I/O库

●标准I/O库由ANSIC标准说明

●标准I/O库处理很多细节,如缓存分配、以优化长度执行I/O等,这样使用户不必关心如何选择合适的块长度

●标准I/O在系统调用函数基础上构造的,它便于用户使用

●标准I/O库及其头文件为底层I/O系统调用提供了一个通用的接口。

【5】缓存区的数据什么时候拿出

●全缓存:默认的就是全缓存

◆刷新条件:

★程序正常结束

★缓存区满了

★刷新函数(fflush)

●行缓存:默认和终端有关系的缓存

◆刷新条件:

★程序正常结束

★缓存区满了

★刷新函数

★‘\n’

●无缓存:标准出错,人机交互

【6】测试行缓存的大小(1k)

【7】文件指针:用来存放文件的有关信息,每个被使用的文件都在内存中开辟一个区域这些信息是保存在一个结构体类型的变量中,该结构体类型是由系统定义的,取名为FILE。

●标准I/O库的所有操作都是围绕流(stream)来进行的,在标准I/O中,流用FILE*来描述。

●标准I/O库是由DennisRitchie在1975年左右编写的

【8】ctags的使用

●进入/usr/incude

●执行ctags-R

●向下翻页:Ctrl+]

●向上翻页:Ctrl+t

●退出:q

【9】fopen

●intfclose(FILE*fp);

◆功能:关闭一个流

◆参数:要关闭的流

◆返回值:成功0失败EOF

【11】每次一个字符的输入输出

●输入

◆intfputc(intc,FILE*stream);

★功能:向流中输出一个字符

★参数:c要输出的字符

Stream流

★返回值:成功输出的字符,失败EOF

◆intputc(intc,FILE*stream);

★同上

◆intputchar(intc);

【12】每次一行的输入输出

●输入

◆intfputs(constchar*s,FILE*stream);

★功能:向流中输出一个字符串,第一个’\0’之前的内容

★参数:s要输出的内容

stream流

★返回值:成功输出的个数,失败EOF

★注意:不自带换行

【13每次一个记录的读写

●intfseek(FILE*stream,longoffset,intwhence);

◆功能:使文件的光标偏移

◆参数:

★stream流

★offset偏移量

★whence相对位置

▅SEEK_SET开始位置

▅SEEK_CUR当前位置

▅SEEK_END结尾位置

◆返回值:成功0失败-1

●longftell(FILE*stream);

◆功能:检测光标位置

◆返回值:成功光标的位置

●voidrewind(FILE*stream);

◆功能:光标移动到开始位置