题目
ftell( )函数用于确定文件指针的当前读 / 写位置,其调用的一般形式为:ftell ( 文件指针 ); 此函数有返回值,若成功定位,则返回当前位置 ; 否则返回 -1。A.正确 B.错误
ftell( )函数用于确定文件指针的当前读 / 写位置,其调用的一般形式为:
ftell ( 文件指针 ); 此函数有返回值,若成功定位,则返回当前位置 ; 否则返回 -1。
A.正确
B.错误
题目解答
答案
在Windows系统x86程序上因为ftell返回的long型取值范围为-2^31 ~2^31-1,故对大于2.1G的文件进行操作时可能因整数溢出出错。Windows系统x64程序的long类型取值范围为-2^63 ~ 2^63理论上只有操作大于8589934592G的文件时才可能会出错。ftell(fp);利用函数 ftell() 也能方便地知道一个文件的长。如以下语句序列: fseek(fp, 0L,SEEK_END); len =ftell(fp); 首先将文件的当前位置移到文件的末尾,然后调用函数ftell()获得当前位置相对于文件首的位移,该位移值等于文件所含字节数。ftell一般用于读取文件的长度,使用fseek函数后再调用函数ftell()就能非常容易地确定文件的当前位置。
综上所述,题目需要判断题干描述是否正确,题干描述正确,答案选A。
解析
考查要点:本题主要考查对ftell()函数功能和返回值的理解,以及其在不同系统环境下可能存在的限制。
解题核心思路:
- 函数基本功能:
ftell()用于获取文件指针的当前位置,返回值为从文件开头到当前位置的字节数。 - 返回值逻辑:若成功定位,返回当前位置;若失败,返回
-1。 - 系统环境限制:需注意不同系统中
long类型的取值范围对大文件操作的影响(如x86与x64系统差异)。
破题关键点:
- 题干描述的
ftell()基本行为(成功返回位置,失败返回-1)是正确的。 - 溢出问题属于数据类型限制,而非函数本身的错误逻辑,因此不影响题干的正确性判断。
函数功能与返回值分析
-
ftell()的基本作用:- 调用形式为
ftell(文件指针),返回文件指针的当前读/写位置(以字节为单位)。 - 成功时返回当前位置,失败时返回
-1。
- 调用形式为
-
系统环境对返回值的影响:
- Windows x86系统:
long为32位,取值范围为-2^31到2^31-1,无法正确处理大于2.1GB的文件。 - Windows x64系统:
long为64位,取值范围为-2^63到2^63-1,可处理的文件大小远超常见范围。
- Windows x86系统:
-
题干描述的正确性:
- 题干未涉及系统环境限制,仅描述
ftell()的基本行为逻辑,因此描述本身是正确的。 - 溢出问题属于数据类型限制,而非函数逻辑错误,故不影响题干的判断。
- 题干未涉及系统环境限制,仅描述