对于ASCII字符集,一个字符用一个字节表示。对于国际字符集,一个字符可用多个字节表示。标准的i/o文件流可以用单个字节或者多个字节(wide)字符集。流的定向决定了所读、写的字符是单字节还是多字节。
标准i/o库提供缓存的目的是 尽可能较少使用read和write调用的次数。
标准i/o提供三种类型的缓冲
- 全缓冲: 在填满标准i/o缓冲区后才进行实际i/o操作。flush将缓冲区中的内容写到磁盘上。
- 行缓冲: 当输入和输出遇到换行时,才实行i/o操作。有个限制: 1. 当填满缓冲区时,没有换行也i/o操作
- 不带缓冲: 像标准错误输出,不带缓冲,使错误尽快显示出来
当用追加写类型打开一个文件,每次写都将数据写到文件到当前尾端处。如果有多个进程用标准i/o追加写方式打开同一文件,那么来自每个进程的数据都将正确地写到文件中。
标准i/o库把数据缓存在内存中,因此每次一个字符和每次一行的i/o更有效。所有的i/o都是通过在缓冲区和主存之间来回传送字节完成的。