第35练 9.4 文件的定位函数和结尾标志 + 9.5 文件应用实例 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)

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

内容正文:

【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第35练,内容是9.4 文件的定位函数和结尾标志 + 9.5 文件应用实例。 《编程语言基础——C语言》(第5版)一课一练 第35练 9.4 文件的定位函数和结尾标志 + 9.5 文件应用实例 一、单选题 1. rewind(fp)函数的功能是( ) A. 将文件位置指针重新定位到文件的开头 B. 重新打开文件fp C. 将文件指针移动到文件末尾 D. 清除文件的所有内容 【答案】A 【解析】rewind(fp)将文件内部的位置指针重置到文件开头,同时清除文件结束标志和错误标志。相当于fseek(fp, 0L, SEEK_SET)。常用于写完文件后需要从头读取的场景。 2. fseek(fp, 10L, SEEK_SET); 执行后,下一次读写操作将从什么位置开始( ) A. 文件末尾往前10个字节处 B. 文件开头往后10个字节处 C. 当前位置往后10个字节处 D. 距文件末尾10个字节处 【答案】B 【解析】fseek的三个基准位置:SEEK_SET=文件开头(0),SEEK_CUR=当前位置(1),SEEK_END=文件末尾(2)。fseek(fp, 10L, SEEK_SET)表示从文件开头偏移10字节,即定位到第10个字节处。 3. ftell(fp)函数返回的是( ) A. 文件的总字节数 B. 文件当前行的行号 C. 文件位置指针相对于文件开头的偏移量 D. 文件剩余可读的字节数 【答案】C 【解析】ftell(fp)返回当前文件位置指针相对于文件开头的字节偏移量,类型为long。常用于获取当前读写位置,配合fseek可以实现位置保存和恢复。获取文件大小可结合fseek和ftell。 4. 关于feof函数,以下描述正确的是( ) A. feof(fp)在读取文件最后一个字符后立即返回真 B. feof(fp)返回真表示文件打开成功 C. feof(fp)需要在fopen之前调用 D. feof(fp)在尝试读取超过文件末尾的数据后才返回真 【答案】D 【解析】feof(fp)用于检测是否已到达文件末尾。注意:它不是在读完最后一个字符后立即返回真,而是在尝试读取超过末尾时(即读操作失败后)才返回真。因此文件读取循环通常用fgetc返回值判断EOF而非feof。 5. 以下代码能获取文件大小(字节数)的是( ) A. fseek(fp, 0L, SEEK_END); long size = ftell(fp); B. long size = sizeof(fp); C. long size = ftell(fp); D. long size = feof(fp); 【答案】A 【解析】获取文件大小的常用方法:先用fseek(fp, 0L, SEEK_END)将位置指针移到文件末尾,然后ftell(fp)返回末尾的偏移量即文件总大小。之后可用rewind(fp)复位。这是C语言中计算文件长度的标准技巧。 6. 要统计一个文本文件中某个字符出现的次数,以下步骤顺序正确的是:①打开文件 ②遍历文件读取每个字符 ③比较并计数 ④关闭文件 ⑤检查文件是否成功打开( ) A. ①→②→③→④→⑤ B. ⑤→①→②→③→④ C. ①→⑤→②→③→④ D. ⑤→①→④→②→③ 【答案】B 【解析】文件操作的正确流程:先检查文件是否成功打开(①后立即判断返回值⑤),确认打开成功后才进行读取操作。然后遍历文件逐字符读取并比较计数(②③),最后关闭文件释放资源(④)。 7. 文件位置指针当前在第5字节处,执行 fseek(fp, -3L, SEEK_CUR); 后,位置指针在( ) A. 文件开头 B. 第8字节处 C. 第2字节处 D. 文件末尾 【答案】C 【解析】SEEK_CUR表示从当前位置开始偏移。-3L表示向前(文件开头方向)移动3字节。当前位置=5,向前3字节→5-3=2,位置指针定位到第2字节处。负偏移可将指针向文件头方向移动。 二、程序运行结果题 8. 以下程序的运行结果是【··】。(假设文件"data.txt"中内容是"ABCDEFGHI") #include <stdio.h> main() { FILE *fp; char ch; fp = fopen("data.txt", "r"); if (fp != NULL) { fseek(fp, 3L, SEEK_SET); ch = fgetc(fp); fseek(fp, 6L, SEEK_SET); ch = fgetc(fp); printf("%c", ch); fclose(fp); } } 【答案】G 【解析】文件内容"ABCDEFGHI",索引从0开始:A(0),B(1),C(2),D(3),E(4),F(5),G(6),H(7),I(8)。fseek定位到第3字节读取D,再定位到第6字节读取G并覆盖ch。最终输出G。fseek可反复定位,后一次会覆盖前一次读取的值。 三、程序填空题 9. 以下程序的功能是:在文件末尾追加一行新内容。请填空。 #include <stdio.h> main() { FILE *fp; fp = fopen("log.txt", 【1】); if (fp != NULL) { fprintf(fp, "New entry added. "); fclose(fp); printf("追加成功! "); } else printf("文件打开失败! "); } 【答案】【1】"a" 【解析】要在文件末尾追加内容而不覆盖原有内容,应用"a"(append追加)模式打开文件。"w"模式会清空原内容,"r"模式不能写入。追加模式打开后,文件位置指针自动指向末尾,写入内容追加在原内容之后。 四、阅读程序改错题 10. 阅读以下程序,该程序的功能是先向文件写入数据,再从文件中读回并输出。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。 L1 #include <stdio.h> L2 main() L3 { L4 FILE *fp; L5 int x; L6 fp = fopen("test.txt", "w+"); L7 fprintf(fp, "%d", 12345); L8 fscanf(fp, "%d", &x); L9 printf("读取的值:%d ", x); L10 fclose(fp); L11 } 【答案】【1】L7-L8之间需要添加 rewind(fp);(fprintf写入后位置指针在文件末尾,fscanf从末尾读不到数据,应先将位置指针重置到文件开头) 【解析】fprintf写入"12345"后,文件位置指针指向末尾。紧接着fscanf从当前位置(末尾)读取,什么都读不到,x不会得到值。应在fprintf和fscanf之间添加rewind(fp)将位置指针移回开头,fscanf才能正确读取到"12345"。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第35练,内容是9.4 文件的定位函数和结尾标志 + 9.5 文件应用实例。 《编程语言基础——C语言》(第5版)一课一练 第35练 9.4 文件的定位函数和结尾标志 + 9.5 文件应用实例 一、单选题 1. rewind(fp)函数的功能是( ) A. 将文件位置指针重新定位到文件的开头 B. 重新打开文件fp C. 将文件指针移动到文件末尾 D. 清除文件的所有内容 2. fseek(fp, 10L, SEEK_SET); 执行后,下一次读写操作将从什么位置开始( ) A. 文件末尾往前10个字节处 B. 文件开头往后10个字节处 C. 当前位置往后10个字节处 D. 距文件末尾10个字节处 3. ftell(fp)函数返回的是( ) A. 文件的总字节数 B. 文件当前行的行号 C. 文件位置指针相对于文件开头的偏移量 D. 文件剩余可读的字节数 4. 关于feof函数,以下描述正确的是( ) A. feof(fp)在读取文件最后一个字符后立即返回真 B. feof(fp)返回真表示文件打开成功 C. feof(fp)需要在fopen之前调用 D. feof(fp)在尝试读取超过文件末尾的数据后才返回真 5. 以下代码能获取文件大小(字节数)的是( ) A. fseek(fp, 0L, SEEK_END); long size = ftell(fp); B. long size = sizeof(fp); C. long size = ftell(fp); D. long size = feof(fp); 6. 要统计一个文本文件中某个字符出现的次数,以下步骤顺序正确的是:①打开文件 ②遍历文件读取每个字符 ③比较并计数 ④关闭文件 ⑤检查文件是否成功打开( ) A. ①→②→③→④→⑤ B. ⑤→①→②→③→④ C. ①→⑤→②→③→④ D. ⑤→①→④→②→③ 7. 文件位置指针当前在第5字节处,执行 fseek(fp, -3L, SEEK_CUR); 后,位置指针在( ) A. 文件开头 B. 第8字节处 C. 第2字节处 D. 文件末尾 二、程序运行结果题 8. 以下程序的运行结果是【··】。(假设文件"data.txt"中内容是"ABCDEFGHI") #include <stdio.h> main() { FILE *fp; char ch; fp = fopen("data.txt", "r"); if (fp != NULL) { fseek(fp, 3L, SEEK_SET); ch = fgetc(fp); fseek(fp, 6L, SEEK_SET); ch = fgetc(fp); printf("%c", ch); fclose(fp); } } 三、程序填空题 9. 以下程序的功能是:在文件末尾追加一行新内容。请填空。 #include <stdio.h> main() { FILE *fp; fp = fopen("log.txt", 【1】); if (fp != NULL) { fprintf(fp, "New entry added. "); fclose(fp); printf("追加成功! "); } else printf("文件打开失败! "); } 四、阅读程序改错题 10. 阅读以下程序,该程序的功能是先向文件写入数据,再从文件中读回并输出。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。 L1 #include <stdio.h> L2 main() L3 { L4 FILE *fp; L5 int x; L6 fp = fopen("test.txt", "w+"); L7 fprintf(fp, "%d", 12345); L8 fscanf(fp, "%d", &x); L9 printf("读取的值:%d ", x); L10 fclose(fp); L11 } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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