题目
【例5】以下叙述中错误的是()。A. 二进制文件打开后可以先读文件的末尾,而顺序文件不可以B. 在程序结束时,应当用fclose函数关闭已打开的文件C. 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据D. 不可以用FILE定义指向二进制文件的文件指针
【例5】以下叙述中错误的是()。
A. 二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B. 在程序结束时,应当用fclose函数关闭已打开的文件
C. 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D. 不可以用FILE定义指向二进制文件的文件指针
题目解答
答案
D. 不可以用FILE定义指向二进制文件的文件指针
解析
本题主要考察C语言文件操作的相关知识,需对二进制文件、顺序文件的特点及文件操作函数的使用规则进行辨析。
选项A分析
二进制文件和顺序文件的核心区别在于访问方式:
- 顺序文件(如文本文件)只能按顺序从文件头开始读取,无法直接访问文件末尾(需从头读到尾);
- 二进制文件支持随机访问(通过
fseek函数定位文件指针到任意位置),因此可以先读文件末尾。
选项A正确。
选项B分析
文件操作的基本规范:
- 打开文件后,必须用
fclose函数关闭文件,以释放系统资源(如文件缓冲区、文件描述符等)。程序结束时未关闭文件可能导致数据丢失或资源泄漏。
选项B正确。
选项C分析
fread函数的功能是从二进制文件中读取块数据:
- 函数原型:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); - 当
ptr为数组名时,数组名退化为指向首元素的指针,fread会连续读取nmemb个size字节的数据到数组中,实现给数组所有元素读入数据。
选项C正确。
选项D分析
文件指针的定义规则:
- 在C语言中,无论二进制文件还是文本文件,文件指针的类型均为
FILE*(FILE是标准库定义的结构体类型)。指向二进制文件的文件指针同样用FILE定义(如FILE *fp; fp = fopen("file.bin", "rb");)。
选项D错误。