C语言文件指针自动移动

老师说C语言在读写文件的时候,文件内部指针会自动向后移,指向将要读或者写的,但还没有操作的字节。
那么这个文件内部指针是不是就是用打开文件函数所赋值的那个指针?
而且它的自动移动是不是因为我们用函数操作文件,因此函数中包含了使指针移动的语句?还是操作程序自动给任何程序(包括C程序)执行的?
求高手!!

文件内部指针不是就是用打开文件函数所赋值的那个指针,
打开函数的指针,是文件流的指针,指向这个文件流。
内部指针指向当前操作在文件流中的位置
fp是文件指针的话
可以使用ftell(fp)来获取当前内部指针位置。

也有fseek函数来设置内部指针位置,这些函数调用的时候,必须使用文件流的 指针。文件流的指针始终是这个fp,但内部指针的位置是一直在移动的,没有一个可见的内部指针的变量来让你操作,只对文件指针操作就可以了。

读写文件的时候内部指针自动移动,是C的IO系统管理来实现的,这个文件流其实仍然是IO,跟键盘鼠标都是由IO系统管理来做的,不用去关心底层的具体操作,只要知道读写操作以后内部指针变了,就行。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-10
文件内部指针不是就是用打开文件函数所赋值的那个指针,
打开函数的指针,是文件流的指针,指向这个文件流。
内部指针指向当前操作在文件流中的位置
fp是文件指针的话
可以使用ftell(fp)来获取当前内部指针位置。

也有fseek函数来设置内部指针位置,这些函数调用的时候,必须使用文件流的 指针。文件流的指针始终是这个fp,但内部指针的位置是一直在移动的,没有一个可见的内部指针的变量来让你操作,只对文件指针操作就可以了。

读写文件的时候内部指针自动移动,是C的IO系统管理来实现的,这个文件流其实仍然是IO,跟键盘鼠标都是由IO系统管理来做的,不用去关心底层的具体操作,只要知道读写操作以后内部指针变了,就行。本回答被提问者和网友采纳
第2个回答  2013-01-09
文件指针你不能直接使用,打开文件的那是流指针,永远指向流本身,修改文件内容指针的位置,只能通过fseek来设置,而且得到值不是指针,只是个长度,文件指针是系统管理的,你不能直接操作这个指针,你读取成功后指针后移是系统完成的,不是C语言函数完成的,C语言实现文件操作也是通过调用系统API实现的,文件是操作系统的一个对象,直接操作他的是windows系统,并不是C语言。。。。
当然我说的这些特指WINDOWS系统的C语言程序,其他环境的,甚至是裸机环境的肯定不是这样,C语言只规定了语法和函数功能,不规定实现方法(这没法规定)。。。。
第3个回答  2013-01-09
初学C语言就考虑到这么多,真不错~
fopen返回的FILE *其实就是个int *,那个int只是当前c打开的文件的标识,并不是文件指针。在windows,fopen 底层调用了API CreateFile,这个API返回的HANDLE类型也不是文件指针,文件指针是隐藏的,用户基本看不到的。
指针自动移动(fread/fwrite)是调用了相应API(ReadFile/WriteFile)的结果,即API自行修改了文件指针。
还有什么问题。。。
第4个回答  2013-01-09
微机原理中有个寄存器叫做指针寄存器他是随着程序的执行地址自动加一,你说的移动应该是地址的变化吧

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网