内容正文:
9.1节与9.2节了解文件及文件的打开和关闭
一、单项选择题
1.以下关于fclose函数的描述,错误的是( )
A. 调用fclose后,对应的FILE指针会自动置为 NULL
B. 关闭文件时,会将缓冲区剩余数据写入磁盘
C. 未关闭文件可能导致数据丢失(缓冲区数据未写入)
D. 重复关闭同一个已关闭的文件指针会导致运行异常
2.若要以 “读写” 方式打开二进制文件data.bin,且写入时覆盖原内容,正确的打开方式是()
A. "rb+"
B. "wb+"
C. "ab+"
D. "r+b"
3.以下代码中,能正确判断文件是否打开成功的是()
A. FILE *fp;
if(fopen("test.txt", "r") == NULL) printf("失败");
B. FILE *fp = fopen("test.txt", "w");
if(fp) printf("成功");
C. FILE *fp = fopen("test.txt", "a");
if(!fp) printf("失败");
D. FILE *fp;
fopen("test.txt", "r+");
if(fp == NULL) printf("失败");
4.关于文本文件和二进制文件的区别,以下描述核心正确的是()
A. 文本文件存储字符,二进制文件存储数字
B. 文本文件会对换行符等进行转换(如
对应 \r
),二进制文件按原始数据存储
C. 二进制文件不能用文本编辑器打开
D. 文本文件占用空间更小
5.执行以下代码后,test.txt中的内容是()
FILE *fp = fopen("test.txt", "w");
fputs("hello", fp);
fclose(fp);
fp = fopen("test.txt", "w");
fputs("world", fp);
fclose(fp);
A. helloworld
B. hello
C. world
D. 空
6.以下关于文件指针的描述,正确的是()
A. 文件指针指向文件的第一个字符
B. 文件指针是FILE类型变量的地址,记录文件当前操作位置
C. 打开文件后,文件指针默认指向文件末尾
D. 仅能通过fseek修改文件指针位置
7.若在 Windows 系统中以"w"模式打开文本文件,写入"a
b",则文件实际存储的字节是()
A. 3 字节(a +
+ b)
B. 4 字节(a + \r +
+ b)
C. 2 字节(a + b)
D. 不确定
8.以下代码存在的核心错误是()
#include <stdio.h>
main() {
FILE *fp = fopen("data.txt", "r");
fputs("test", fp);
fclose(fp);
}
A. 未判断文件是否打开成功
B. 以只读模式打开文件,却执行写入操作
C. fputs参数顺序错误
D. 缺少头文件
9.以下关于文件打开模式的组合,合法且有意义的是()
A. "rw"
B. "rbw"
C. "r+"
D. "br"
10.执行以下代码后,若data.txt原本内容为 "12345",最终文件内容是()
FILE *fp = fopen("data.txt", "r+");
fseek(fp, 2, SEEK_SET);
fputs("ab", fp);
fclose(fp);
A. 12ab5
B. ab345
C. 12345ab
D. ab
二、填空题
11.C 语言中,文件分为____和____两类;其中,存储程序代码或可执行指令的是____,存储数据的是____。
12.C 语言中,文件类型指针的定义格式是____;其中,FILE是____(填 “基本数据类型”/“结构体类型”)。
13. 若要以 “只读” 方式打开文本文件data.txt,fopen函数的调用格式是____;若文件不存在,该调用会返回____。
14.fopen函数的返回值类型是____;若要判断文件是否打开成功,可通过判断返回值是否等于____实现。
15.若文件打开方式为"w",其含义是____(填文本 / 二进制)文件的____(填 “只读”/“只写”/“读写”)方式;若文件已存在,该方式会____(填 “追加内容”/“清空原内容”)。
16.关闭文件的函数是____,其参数是____(填 “文件名”/“文件指针”);调用该函数后,会将____中的剩余数据写入磁盘。
17.若要以 “二进制只读” 方式打开文件test.bin,fopen的打开方式参数是____;该方式与文本方式的核心区别是____。
18.以下代码中,若test.txt原本不存在,执行后会____(填 “创建文件”/“不创建文件”),输出结果是____。
FILE *fp = fopen("test.txt", "r");
if(fp == NULL) printf("打开失败");
19.若要以 “读写” 方式打开文本文件,且写入时追加到文件末尾,打开方式参数是____;该方式下,写入操作始终会将数据追加到____。
20.以下代码中,fp是文件指针,执行fclose(fp);后,fp的值____(填 “会”/“不会”)自动变为NULL;为避免野指针,应手动将fp赋值为____。
FILE *fp = fopen("data.txt", "r");
fclose(fp);
21.若要以 “读写” 方式打开二进制文件,且保留原文件内容,打开方式参数是____;该方式要求文件____(填 “必须存在”/“可以不存在”)。
22.以下代码中,若test.txt原本内容为 “hello”,执行后文件内容是____。
FILE *fp1 = fopen("test.txt", "w");
fputs("world", fp1);
FILE *fp2 = fopen("test.txt", "a");
fputs("!", fp2);
fclose(fp1);
fclose(fp2);
23.若文件打开方式为"a",则写入操作的位置是____;若要在该方式下读取文件内容,需将打开方式改为____。
24.以下代码中,若data.txt不存在,执行后会创建文件的是第____行的fopen调用。
1. FILE *fp1 = fopen("data.txt", "r");
2. FILE *fp2 = fopen("data.txt", "w");
3. FILE *fp3 = fopen("data.txt", "r+");
25.若要以 “读写” 方式打开文本文件,且文件不存在时自动创建,打开方式参数是____;该方式下,写入操作会____(填 “清空原内容”/“追加内容”)。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
9.1节与9.2节了解文件及文件的打开和关闭
一、单项选择题
1.以下关于fclose函数的描述,错误的是( )
A. 调用fclose后,对应的FILE指针会自动置为 NULL
B. 关闭文件时,会将缓冲区剩余数据写入磁盘
C. 未关闭文件可能导致数据丢失(缓冲区数据未写入)
D. 重复关闭同一个已关闭的文件指针会导致运行异常
【答案】A
2.若要以 “读写” 方式打开二进制文件data.bin,且写入时覆盖原内容,正确的打开方式是( )
A. "rb+"
B. "wb+"
C. "ab+"
D. "r+b"
【答案】D
3.以下代码中,能正确判断文件是否打开成功的是( )
A. FILE *fp;
if(fopen("test.txt", "r") == NULL) printf("失败");
B. FILE *fp = fopen("test.txt", "w");
if(fp) printf("成功");
C. FILE *fp = fopen("test.txt", "a");
if(!fp) printf("失败");
D. FILE *fp;
fopen("test.txt", "r+");
if(fp == NULL) printf("失败");
【答案】C
4.关于文本文件和二进制文件的区别,以下描述核心正确的是( )
A. 文本文件存储字符,二进制文件存储数字
B. 文本文件会对换行符等进行转换(如
对应 \r
),二进制文件按原始数据存储
C. 二进制文件不能用文本编辑器打开
D. 文本文件占用空间更小
【答案】B
5.执行以下代码后,test.txt中的内容是( )
FILE *fp = fopen("test.txt", "w");
fputs("hello", fp);
fclose(fp);
fp = fopen("test.txt", "w");
fputs("world", fp);
fclose(fp);
A. helloworld
B. hello
C. world
D. 空
【答案】C
6.以下关于文件指针的描述,正确的是( )
A. 文件指针指向文件的第一个字符
B. 文件指针是FILE类型变量的地址,记录文件当前操作位置
C. 打开文件后,文件指针默认指向文件末尾
D. 仅能通过fseek修改文件指针位置
【答案】B
7.若在 Windows 系统中以"w"模式打开文本文件,写入"a
b",则文件实际存储的字节是( )
A. 3 字节(a +
+ b)
B. 4 字节(a + \r +
+ b)
C. 2 字节(a + b)
D. 不确定
【答案】B
8.以下代码存在的核心错误是( )
#include <stdio.h>
main() {
FILE *fp = fopen("data.txt", "r");
fputs("test", fp);
fclose(fp);
}
A. 未判断文件是否打开成功
B. 以只读模式打开文件,却执行写入操作
C. fputs参数顺序错误
D. 缺少头文件
【答案】B
9.以下关于文件打开模式的组合,合法且有意义的是( )
A. "rw"
B. "rbw"
C. "r+"
D. "br"
【答案】C
10.执行以下代码后,若data.txt原本内容为 "12345",最终文件内容是( )
FILE *fp = fopen("data.txt", "r+");
fseek(fp, 2, SEEK_SET);
fputs("ab", fp);
fclose(fp);
A. 12ab5
B. ab345
C. 12345ab
D. ab
【答案】A
二、填空题
11.C 语言中,文件分为____和____两类;其中,存储程序代码或可执行指令的是____,存储数据的是____。
【答案】程序文件;数据文件;程序文件;数据文件
12.C 语言中,文件类型指针的定义格式是____;其中,FILE是____(填 “基本数据类型”/“结构体类型”)。
【答案】FILE *fp;;结构体类型
13. 若要以 “只读” 方式打开文本文件data.txt,fopen函数的调用格式是____;若文件不存在,该调用会返回____。
【答案】fopen("data.txt", "r");;NULL
14.fopen函数的返回值类型是____;若要判断文件是否打开成功,可通过判断返回值是否等于____实现。
【答案】FILE *;NULL
15.若文件打开方式为"w",其含义是____(填文本 / 二进制)文件的____(填 “只读”/“只写”/“读写”)方式;若文件已存在,该方式会____(填 “追加内容”/“清空原内容”)。
【答案】文本;只写;清空原内容
16.关闭文件的函数是____,其参数是____(填 “文件名”/“文件指针”);调用该函数后,会将____中的剩余数据写入磁盘。
【答案】fclose();文件指针;缓冲区
17.若要以 “二进制只读” 方式打开文件test.bin,fopen的打开方式参数是____;该方式与文本方式的核心区别是____。
【答案】"rb";不进行字符转换(如换行符
不会转为\r
)
18.以下代码中,若test.txt原本不存在,执行后会____(填 “创建文件”/“不创建文件”),输出结果是____。
FILE *fp = fopen("test.txt", "r");
if(fp == NULL) printf("打开失败");
【答案】不创建文件;打开失败
19.若要以 “读写” 方式打开文本文件,且写入时追加到文件末尾,打开方式参数是____;该方式下,写入操作始终会将数据追加到____。
【答案】"a+";文件末尾
20.以下代码中,fp是文件指针,执行fclose(fp);后,fp的值____(填 “会”/“不会”)自动变为NULL;为避免野指针,应手动将fp赋值为____。
FILE *fp = fopen("data.txt", "r");
fclose(fp);
【答案】不会;NULL
21.若要以 “读写” 方式打开二进制文件,且保留原文件内容,打开方式参数是____;该方式要求文件____(填 “必须存在”/“可以不存在”)。
【答案】"rb+";必须存在
22.以下代码中,若test.txt原本内容为 “hello”,执行后文件内容是____。
FILE *fp1 = fopen("test.txt", "w");
fputs("world", fp1);
FILE *fp2 = fopen("test.txt", "a");
fputs("!", fp2);
fclose(fp1);
fclose(fp2);
【答案】world!
23.若文件打开方式为"a",则写入操作的位置是____;若要在该方式下读取文件内容,需将打开方式改为____。
【答案】文件末尾;"a+"
24.以下代码中,若data.txt不存在,执行后会创建文件的是第____行的fopen调用。
1. FILE *fp1 = fopen("data.txt", "r");
2. FILE *fp2 = fopen("data.txt", "w");
3. FILE *fp3 = fopen("data.txt", "r+");
【答案】2
25.若要以 “读写” 方式打开文本文件,且文件不存在时自动创建,打开方式参数是____;该方式下,写入操作会____(填 “清空原内容”/“追加内容”)。
【答案】"w+";清空原内容
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$