单选题
1、第82题 (1.0分) 题号:736 以下叙述中错误的是()。
A
二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B
在程序结束时,应当用fclose函数关闭已打开的文件
C
在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D
不可以用FILE定义指向二进制文件的文件指针
答案解析
正确答案:D
解析:
这道题考查的是 C 语言中文件操作的基本概念,特别是二进制文件与文本文件(顺序文件)的区别,以及 `FILE` 指针的使用。我们需要逐一分析各个选项,找出叙述**错误**的一项。
**选项分析:**
* **A. 二进制文件打开后可以先读文件的末尾,而顺序文件不可以**
* **分析**:这是正确的。二进制文件通常支持随机访问(Random Access),可以使用 `fseek` 函数将文件位置指针移动到文件的任意位置(包括末尾),然后进行读取。而传统的顺序文件(通常指文本流或只能顺序访问的设备/文件类型)一般要求按顺序从头到尾读取,不支持直接跳转到末尾读取数据而不经过中间内容(或者说在某些严格定义的顺序访问模式下不支持随机定位)。因此,该叙述在对比两者特性时是合理的。
* **结论**:叙述正确。
* **B. 在程序结束时,应当用fclose函数关闭已打开的文件**
* **分析**:这是正确的。虽然程序正常终止时,操作系统通常会关闭所有打开的文件描述符并刷新缓冲区,但在编程规范中,显式调用 `fclose` 是一个良好的习惯。它可以确保缓冲区中的数据被写入磁盘(flush),释放系统资源,并返回操作状态以便检查是否有写入错误。
* **结论**:叙述正确。
* **C. 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据**
* **分析**:这是正确的。`fread` 函数的原型是 `size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);`。第一个参数 `ptr` 是一个指向存储数据内存块的指针。数组名在表达式中会退化为指向数组首元素的指针。因此,可以将数组名作为参数传入,一次性读取多个数据块到数组中。
* **结论**:叙述正确。
* **D. 不可以用FILE定义指向二进制文件的文件指针**
* **分析**:这是**错误**的。在 C 语言中,无论是文本文件还是二进制文件,都使用相同的文件指针类型 `FILE *` 来指向。区别在于打开文件时 `fopen` 函数的模式字符串不同(例如 `"rb"` 表示以二进制只读方式打开,`"r"` 表示以文本只读方式打开)。一旦文件被打开,返回的都是 `FILE *` 类型的指针,后续的操作函数(如 `fread`, `fwrite`, `fseek` 等)通过这个指针来操作文件,并不区分指针本身的类型差异。
* **结论**:叙述错误。
**总结:**
题目要求选出叙述**错误**的一项。选项 A、B、C 均描述了正确的文件操作特性或规范,只有选项 D 错误地认为二进制文件需要特殊的指针类型,实际上它们共用 `FILE *` 类型。
因此,正确答案是 **D**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、第177题 (1.0分) 题号:716 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()。
单选题
1、第176题 (1.0分) 题号:721 fseek函数的正确调用形式是()。
单选题
1、第175题 (1.0分) 题号:190 关于指针概念说法不正确的是()。
单选题
1、第174题 (1.0分) 题号:119 下列运算符中,不属于关系运算符的是()。
单选题
1、第173题 (1.0分) 题号:660 在C语言中,函数的隐含存储类别是()。
单选题
1、第172题 (1.0分) 题号:737 下列关于C语言数据文件的叙述中正确的是()。
单选题
1、第171题 (1.0分) 题号:155 假定所有变量均已正确定义,下列程序段运行后x的值是()。
单选题
1、第170题 (1.0分) 题号:644 以下对一维整型数组a的正确说明是()。
单选题
1、第169题 (1.0分) 题号:744 当说明一个结构体变量时系统分配给它的内存是()。
单选题
1、第168题 (1.0分) 题号:490 以下字符中不是转义字符的是()。
