一起talk C栗子吧(第一百四十一回:C语言实例--文件操作:基于文件指针一)
各位看官们,大家好,上一回中咱们说的是基于文件描述符进行文件操作的例子,这一回咱们说的是基于文件指针进行文件操作的例子。闲话休提,言归正转。让我们一起talk c栗子吧!
看官们,在介绍文件指针前,我们先介绍一下文件流。所谓的文件流是一个抽象的概念,对文件的操作无非是向文件读取或者写入数据,而读取或者写入数据的过程是持续的,就是小河流水一样,因此就叫把它叫作流了。当然了,这并不是命名文件流的真正原因,它是从stream这个单词翻译过来的。 我们常用的文件流有输入流,输出流和错误流。
明白文件流后,我们来介绍文件指针。文件指针是指向文件流的,我们可以通过文件指针来操作文件流,进而操作文件。我这么说,大家是不是觉得,文件指针和文件描述符十分类似呢?确实是这样。文件描述符是提供的,而文件指针是c标准库提供的。就像通过文件描述符使用系统api一样,我们可以通过文件指针使用标准库中的函数。其实文件指针是标准库对文件描述符的封装,文件指针中除了包含有文件描述符外,还有一些缓冲信息。当然了,我们在编写应用程序的时候不需要关注这些细节。
大家还记得我们在说文件描述符时介绍过的0,1,2这三个文件描述符吧,它们分别表示标准输入,标准输出和标准错误,每个进程启动时都会自动打开这三个文件操作符,在进程结束时又会自动关闭它们。和文件描述类似,标准库也提供了三个文件指针:
stdin 指向标准输入流 stdout 指向标准输出流 stderr 指向标准错误流这三个流也是随着进程的启动而且打开,随着进程的结束而关闭。大家都知道文件描述符的数量是有限的,文件流的数量也是有限的,通常来说,我们最多可以打开16个文件流。这个与系统设置有关,我们可以通过stdio.h文件中的fopen_max来查看。
看官们,文件指针和文件描述符十分类似,因此,大家可以使用对比的方式去学习和了解他们。只要明白了其中的一种,另外一种就很容易掌握了。就当作是依葫芦画瓢吧,哈哈。
各位看官,关于文件操作:基于文件指针的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。
推荐阅读
-
一起talk C栗子吧( 第一百四十回:C语言实例--文件操作:基于文件描述符三)
-
一起talk C栗子吧(第一百四十三回:C语言实例--文件操作:基于文件指针三)
-
一起talk C栗子吧(第一百三十九回:C语言实例--文件操作:基于文件描述符二)
-
一起talk C栗子吧(第一百三十八回:C语言实例--文件操作:基于文件描述符一)
-
一起talk C栗子吧(第一百四十一回:C语言实例--文件操作:基于文件指针一)
-
一起talk C栗子吧(第一百四十二回:C语言实例--文件操作:基于文件指针二)
-
一起talk C栗子吧(第一百零一回:C语言实例--使用信号量进行进程间同步与互斥二)
-
一起talk C栗子吧(第一百一十一回:C语言实例--线程间通信)
-
一起talk C栗子吧(第一百五十八回:C语言实例--基于AF_INET域的流套接字通信)
-
一起talk C栗子吧(第一百四十七回:C语言实例--socket通信一)