第34练 9.3 文件的读_写函数 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)

2026-06-25
| 2份
| 10页
| 41人阅读
| 0人下载

内容正文:

【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第34练,内容是9.3 文件的读/写函数。 《编程语言基础——C语言》(第5版)一课一练 第34练 9.3 文件的读/写函数 一、单选题 1. 从文件中读取格式化数据,应使用的函数是( ) A. fscanf B. fgetc C. fputs D. fwrite 2. 要向文件中写入格式化数据 "x=10, y=20",正确的语句是( ) A. printf("x=%d, y=%d", 10, 20); B. fprintf(fp, "x=%d, y=%d", 10, 20); C. fscanf(fp, "x=%d, y=%d", 10, 20); D. fputs("x=%d, y=%d", fp); 3. 以下程序段的功能是:FILE *fp = fopen("a.txt", "r"); char ch = fgetc(fp); 执行后ch中存放的是( ) A. 文件a.txt的全部内容 B. FILE结构体的地址 C. 从a.txt中读取的第一个字符 D. 文件是否打开成功的标志 4. char buf[100]; fgets(buf, 100, fp); 的功能是( ) A. 从fp指向的文件中写入一行字符串到buf B. 将buf中的字符串写入到fp指向的文件 C. 从fp指向的文件中读取100个字符(不包含结尾处理) D. 从fp指向的文件中读取一行(最多99个字符),存入buf并在末尾添加'\0' 5. fwrite(&data, sizeof(int), 10, fp); 的含义是( ) A. 将data地址开始的10个int型数据以二进制形式写入文件fp B. 从文件中读取10个int型数据存入data C. 将data变量的值写入文件10次 D. 向文件写入10个字节的数据 6. 先用fprintf向文件写入"ABC",再立即用fscanf读取该文件,以下说法正确的是( ) A. fscanf能直接读到"ABC" B. 需要先用rewind或fseek将文件位置指针移回开头,fscanf才能正确读取 C. fscanf会自动定位到文件开头 D. 对同一文件不能同时使用fprintf和fscanf 7. 用fgetc循环读取文件直到文件末尾,正确的循环条件是( ) A. while (ch = fgetc(fp)) { ... } B. while (ch = fgetc(fp) != NULL) { ... } C. while ((ch = fgetc(fp)) != EOF) { ... } D. while (fgetc(fp) != '\0') { ... } 二、程序运行结果题 8. 以下程序的运行结果是【··】。(假设文件"test.txt"中内容是"Hello World") #include <stdio.h> main() { FILE *fp; char ch; int count = 0; fp = fopen("test.txt", "r"); if (fp != NULL) { while ((ch = fgetc(fp)) != EOF) if (ch == 'l') count++; fclose(fp); } printf("%d", count); } 三、程序填空题 9. 以下程序的功能是:将源文件的内容复制到目标文件(逐字符复制)。请填空。 #include <stdio.h> main() { FILE *fs, *fd; char ch; fs = fopen("source.txt", "r"); fd = fopen("dest.txt", "w"); if (fs != NULL && fd != NULL) { while ((ch = fgetc(fs)) != EOF) 【1】; fclose(fs); fclose(fd); } } 四、阅读程序改错题 10. 阅读以下程序,该程序的功能是从文件中读取一个整数和一个浮点数并输出。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。 L1 #include <stdio.h> L2 main() L3 { L4 FILE *fp; L5 int a; float b; L6 fp = fopen("data.txt", "r"); L7 fscanf(fp, "%d%f", a, b); L8 printf("a=%d, b=%.1f ", a, b); L9 fclose(fp); L10 } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第34练,内容是9.3 文件的读/写函数。 《编程语言基础——C语言》(第5版)一课一练 第34练 9.3 文件的读/写函数 一、单选题 1. 从文件中读取格式化数据,应使用的函数是( ) A. fscanf B. fgetc C. fputs D. fwrite 【答案】A 【解析】fscanf用于从文件中按格式读取数据,用法与scanf类似,但多了FILE指针参数:fscanf(fp, "%d", &x); fgetc读取单个字符;fputs是写入字符串;fwrite用于二进制写入。 2. 要向文件中写入格式化数据 "x=10, y=20",正确的语句是( ) A. printf("x=%d, y=%d", 10, 20); B. fprintf(fp, "x=%d, y=%d", 10, 20); C. fscanf(fp, "x=%d, y=%d", 10, 20); D. fputs("x=%d, y=%d", fp); 【答案】B 【解析】fprintf用于向文件写入格式化数据,第一个参数是文件指针fp,后续参数与printf相同。A中printf输出到屏幕而非文件;C中fscanf是从文件读取;D中fputs的参数顺序错误,不支持格式化。 3. 以下程序段的功能是:FILE *fp = fopen("a.txt", "r"); char ch = fgetc(fp); 执行后ch中存放的是( ) A. 文件a.txt的全部内容 B. FILE结构体的地址 C. 从a.txt中读取的第一个字符 D. 文件是否打开成功的标志 【答案】C 【解析】fgetc(fp)从fp指向的文件中读取一个字符,返回值是该字符的ASCII码(int类型,但可赋给char)。若已读到文件末尾则返回EOF(通常为-1)。连续调用fgetc可逐字符读取整个文件。 4. char buf[100]; fgets(buf, 100, fp); 的功能是( ) A. 从fp指向的文件中写入一行字符串到buf B. 将buf中的字符串写入到fp指向的文件 C. 从fp指向的文件中读取100个字符(不包含结尾处理) D. 从fp指向的文件中读取一行(最多99个字符),存入buf并在末尾添加'\0' 【答案】D 【解析】fgets(buf, n, fp)从文件读取一行字符串:最多读取n-1个字符存入buf,在末尾自动添加'\0',遇到换行符、读到文件末尾时则提前结束。读取的字符串会保留换行符(若有)。 5. fwrite(&data, sizeof(int), 10, fp); 的含义是( ) A. 将data地址开始的10个int型数据以二进制形式写入文件fp B. 从文件中读取10个int型数据存入data C. 将data变量的值写入文件10次 D. 向文件写入10个字节的数据 【答案】A 【解析】fwrite(ptr, size, count, fp)的参数含义:ptr=数据首地址,size=每个数据的大小,count=数据个数,fp=文件指针。此调用将10个int型数据(共10*4=40字节)以二进制形式写入文件。 6. 先用fprintf向文件写入"ABC",再立即用fscanf读取该文件,以下说法正确的是( ) A. fscanf能直接读到"ABC" B. 需要先用rewind或fseek将文件位置指针移回开头,fscanf才能正确读取 C. fscanf会自动定位到文件开头 D. 对同一文件不能同时使用fprintf和fscanf 【答案】B 【解析】文件有一个位置指针,指示当前读写位置。fprintf写入后位置指针指向末尾,此时fscanf从末尾开始读,读不到数据。需要用rewind(fp)将位置指针重置到文件开头,fscanf才能读取到内容。 7. 用fgetc循环读取文件直到文件末尾,正确的循环条件是( ) A. while (ch = fgetc(fp)) { ... } B. while (ch = fgetc(fp) != NULL) { ... } C. while ((ch = fgetc(fp)) != EOF) { ... } D. while (fgetc(fp) != '\0') { ... } 【答案】C 【解析】fgetc读到文件末尾时返回EOF(通常为-1,是一个宏定义)。C中(ch=fgetc(fp))!=EOF先读取字符赋给ch,再判断是否等于EOF。注意括号不能省略,否则赋值优先级低于!=。A无法区分EOF和ASCII码0。 二、程序运行结果题 8. 以下程序的运行结果是【··】。(假设文件"test.txt"中内容是"Hello World") #include <stdio.h> main() { FILE *fp; char ch; int count = 0; fp = fopen("test.txt", "r"); if (fp != NULL) { while ((ch = fgetc(fp)) != EOF) if (ch == 'l') count++; fclose(fp); } printf("%d", count); } 【答案】3 【解析】程序以r模式打开test.txt,用fgetc逐字符读取直到EOF。统计小写字母'l'的出现次数:"Hello World"中含有3个'l'(注意大小写:H不是l,e也不是,l→1,l→2,o不是,空格不是,W不是,o不是,r不是,l→3,d不是)。 三、程序填空题 9. 以下程序的功能是:将源文件的内容复制到目标文件(逐字符复制)。请填空。 #include <stdio.h> main() { FILE *fs, *fd; char ch; fs = fopen("source.txt", "r"); fd = fopen("dest.txt", "w"); if (fs != NULL && fd != NULL) { while ((ch = fgetc(fs)) != EOF) 【1】; fclose(fs); fclose(fd); } } 【答案】【1】fputc(ch, fd) 【解析】文件复制的基本流程:逐字符从源文件读取(fgetc),再写入目标文件(fputc)。fputc(ch, fd)将字符ch写入fd指向的文件。循环直到源文件读完(EOF),完成整个文件的复制。 四、阅读程序改错题 10. 阅读以下程序,该程序的功能是从文件中读取一个整数和一个浮点数并输出。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。 L1 #include <stdio.h> L2 main() L3 { L4 FILE *fp; L5 int a; float b; L6 fp = fopen("data.txt", "r"); L7 fscanf(fp, "%d%f", a, b); L8 printf("a=%d, b=%.1f ", a, b); L9 fclose(fp); L10 } 【答案】【1】L7: fscanf(fp, "%d%f", a, b); → 应改为 fscanf(fp, "%d%f", &a, &b);(fscanf同scanf一样,需要传入变量的地址而非变量本身) 【解析】fscanf的参数规则与scanf相同:格式化字符串后的参数必须是对应变量的地址。a和b是值而非地址,需改为&a和&b。不加&会导致fscanf将a和b的值当作地址使用,产生运行时错误。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第34练 9.3 文件的读_写函数 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)
1
第34练 9.3 文件的读_写函数 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。