标准I/O函数库

来源:互联网 发布:cf调烟头软件 编辑:程序博客网 时间:2024/05/29 10:58

标准I/O函数库:
 C标准库提供了文件的标准 I/O 函数库,相比前述的系统调用,主要差别是实现了跨平台的用户态缓冲的解决方案。标准I/O库使

用简单,与系统调用I/O相似,也包括打开、读写、关闭这些操作,主要的函数列举如下。
 ◆ 打开与关闭文件:fopen,fclose。
 ◆ 读写文件:fread,fwrite。
 ◆ 读写文本行:fgets,fputs。
 ◆ 格式化读写:fscanf,fprintf。
 ◆ 标准输入输出:printf,scanf。
 ◆ 读写字符:fgetc,getc,getchar,fputc,putc,putchar。
 ◆ 其他:fflush,fseek。

 所谓标准 I/O 函数实际上是对底层系统调用的包装,最终读写设备或文件的操作仍需调用系统I/O函数来完成。


1. 两种I/O操作:
一类是f打头的fopen, fread, fwrite
一类是没有f打头的open, read, fwrite
原来一个是UNIX I/O(在类Unix系统上实现),另一类是标准I/O(在很多系统上都有实现,包括windows)。

2. 使用标准I/O的好处
因为在出UNIX的很多操作系统(包括Windows, linux)上都实现了此库,所有有利于软件的移植。
 
3. 与UnixI/O的主要区别
UNIX I/O的函数都是针对文件描述符的,而标准I/O的操作都是围绕流进行的。所为的流就是一个FILE *
标准I/O提供了缓存--为了尽量减少write, read的调用。
标准I/O的效率会低一些,因为它是多了一层封装。即,fread通过调用read来实现。
 
4. 标准I/O的头文件
stdio.h
三个标准I/O流预定义指针:stdin, stdout, stderr
(Unix I/O: STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO)
 
5. 缓存
有缓存就会有延迟,即输出设备上的内容和缓存中的内容很可能不一样。可以调用fflush刷新缓存。
有多种缓存类型,可以调用下面的API来更改默认缓存类型。
setbuf,  setvbuf
setvbuf可以精确的说明缓存的类型。
fclose关闭流时也会刷新流。
当一个进程正常终止时(直接调用exit,或从main函数返回),则所有带未写缓存数据的标准I/O流都会被刷新,所有打开的标准I/O流都会被关闭。
1 0
原创粉丝点击