第4天.标准I/O库



字符,字节和编码    http://www.regexlab.com/zh/encoding.htm


Stream:Digital media that is delivered in a continuous flow across a network.


An abstraction of a sequence of bytes, such as a file, an I/O device, an inter-process communication pipe, a TCP/IP socket, or a spooled print job. The relationship between streams and storages in a compound file is similar to that of files and folders.


The flow of data from a source to a single receiver that flows through a channel, as opposed to packets, which may be addressed and routed independently, possibly to multiple recipients.



流的概念:流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具。本质上是程序输入或输出的一个连续的字节序列(我的理解是,以不同单位或不同目标因素的数据集合,在配以专门的方法和机制使数据能够被人们以不同目的方便利用),设备(例如鼠标,键盘,磁盘,屏幕)的输入和输出都是用流来处理的。在C语言中,所有的流均以文件的形式出现,但不一定是物理磁盘文件,还可以是对应某个输入输出源的逻辑文件。

第4天.标准I/O库


在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,我们对流进行直接操作的,而不用关心流的另一头数据的真正流向。


流不但可以处理文件,还可以处理动态内存、网络数据等多种数据形式。


c语言中所有5中标准的流,程序在任何时候都能使用它们,并且不必打开或关闭它们:

    ------------------------------------------------
        名称          描  述            例  子
    ------------------------------------------------
        stdin        标准输入           键盘
        stdout       标准输出            屏幕
        stderr       标准错误            屏幕
        stdprn       标准打印机          LPT1端口
        stdaux       标准串行设备        COM1端口
    ------------------------------------------------


需要注意的是,stdprn和stdaux并不总是预定义设置好的,因为LPT1和COM1端口在某些操作系统中是没有意义的,而stdin,stdout和stderr总是预先定义好的。此外,stdin并不一定来自键盘,stdout也并不一定显示在屏幕上,它们都可以重定向到磁盘文件或其它设备上。



C语言的I/O系统为用户提供了一个接口,该接口与实际的存取设备无关(我的理解是,我们的操作不用关心实际的存取设备)。只是设备的一个抽象表示形式。这个抽象的接口称为流,实际的设备称为文件。

C文件系统可以与各种设备一起使用,如打印机、硬盘、终端等,缓冲文件系统可以将每个设备转换成逻辑设备,即所谓的流。所有的流工作方式类似,所以很容易操作不同的设备。流有2种类型:文本流和二进制流。

文本流是一系列字符,可以由多行构成,每行由一个换行符终止。

二进制流是一系列字节,并与外部设备上的字节一一对应。


int fseek(FILE *fp, LONG offset, int origin)
fp 文件指针
offset 相对于origin规定的偏移位置量
origin 指针移动的起始位置,可设置为以下三种情况:
SEEK_SET 文件开始位置
SEEK_CUR 文件当前位置
SEEK_END 文件结束位置
简单的说文件操作指示器(fseek)就是当前文件流指针指向的文件的位置


原文地址:https://www.cnblogs.com/SFTD/p/3624591.html