第56练 第11章 文件的字符串输入输出(fgets、fputs)《C语言程序设计》(电子工业出版社)一课一练
|
2份
|
8页
|
42人阅读
|
0人下载
内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(电子工业出版社)一课一练的第11章的第56练,内容涵盖第11章文件的11.4 文件的字符串输入输出(fgets/fputs)。
《C语言程序设计》(电子工业出版社)一课一练 第56练
第11章 文件
11.4 文件的字符串输入输出(fgets/fputs)
1、 单项选择题(本题共4小题)
1、已知char str[15];,执行fgets(str, 10, fp);后,str 数组中最多能存储的有效字符个数是( )
A. 9
B. 10
C. 14
D. 15
【答案】A
【解析】fgets 函数的第二个参数 n 表示最多读取 n-1 个字符,剩余 1 个位置用于自动添加串结束符'\0',因此 10-1=9 个有效字符,其他选项不符合函数参数规则。
2、下列关于 fputs 函数的调用,合法的是( )
A. fputs ('Hello', fp);
B. char s [] = "World"; fputs (s, fp);
C. fputs (12345, fp);
D. fputs ("Hi
", "test.txt");
【答案】B
【解析】fputs 的第一个参数必须是字符串(字符串常量、字符数组名或字符串指针),第二个参数是文件指针。A 是字符常量非法,C 是整数非法,D 第二个参数是文件名而非文件指针,只有 B 符合语法规则。
3、fgets 函数在读取字符串时,不会提前终止读取操作的情况是( )
A. 遇到换行符
B. 遇到文件结束符 EOF
C. 读取到 n-1 个字符
D. 遇到空格字符
【答案】D
【解析】fgets 的终止条件是读取到 n-1 个字符、遇到换行符或 EOF,空格是普通字符,不会触发终止,会被正常读取,因此 D 选项不会导致提前终止。
4、当 fgets 函数读取字符串失败或到达文件末尾时,其返回值是( )
A. 0
B. -1
C. NULL
D. 字符数组的首地址
【答案】C
【解析】fgets 函数读取成功时返回存储字符串的字符数组首地址,若读取失败或已到文件末尾,返回空指针 NULL,程序可通过该返回值判断读取状态。
2、 判断题(本题共3题)
1、fgets 函数读取字符串后,会自动在字符数组的末尾添加串结束符'\0',保证存储的是合法的 C 语言字符串。( )
【答案】√
【解析】fgets 的设计逻辑是预留一个字符位置存储'\0',无论读取到终止条件还是完成 n-1 个字符读取,都会自动添加该结束符,确保字符数组符合 C 语言字符串格式。
2、fputs 函数向文件写入字符串时,会将字符串末尾的'\0'一并写入文件中。( )
【答案】×
【解析】'\0'是 C 语言字符串在内存中的结束标识,并非字符串的有效内容,fputs 仅写入字符串的有效字符部分,不会将'\0'写入文件。
3、使用rewind(fp)函数后,文件内部的位置指针会被移动到文件的末尾位置。( )
【答案】×
【解析】rewind 函数的作用是将文件内部位置指针移动到文件的起始位置,而非末尾;若要移动到末尾可使用 fseek 函数。
3、 填空题(本题共2题)
1、fgets 函数的返回值规则为:读取成功时返回____,读取失败或到达文件末尾时返回 NULL。
【答案】存储字符串的字符数组的首地址
【解析】fgets 返回字符数组首地址,方便程序直接使用读取后的字符串进行后续操作;同时通过返回 NULL 明确标识读取异常,让程序能快速判断读取状态。
2、使用 fputs 函数向文件写入多行字符串时,若需要换行,必须在字符串末尾手动添加____,否则所有字符串会连续存储在同一行。
【答案】换行符'
'
【解析】fputs 不会自动添加换行符,仅按传入的字符串内容写入文件;手动添加'
'后,文件存储时会将后续内容换行显示,符合文本文件的换行格式要求。
4、 读程序写结果题(本题共1题)
1、阅读下面的 C 语言程序,写出程序运行后的输出结果。
【程序代码】
#include <stdio.h>
int main() {
FILE *fp = fopen("temp.txt", "w+");
fputs("C语言", fp);
rewind(fp);
char buf[20];
fgets(buf, 20, fp);
printf("读取到的内容:%s
", buf);
fclose(fp);
return 0;
}
【答案】
程序运行结果:
读取到的内容: C 语言
【解析】
程序以读写模式打开 temp.txt 文件,先用 fputs 将字符串 "C 语言" 写入文件,再通过 rewind 将文件位置指针移到文件开头,接着用 fgets 读取文件中的字符串到 buf 数组,最后输出读取到的内容。由于写入的字符串长度远小于 20,fgets 会完整读取全部内容并自动添加'\0',因此输出结果与写入的字符串一致。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(电子工业出版社)一课一练的第11章的第56练,内容涵盖第11章文件的11.4 文件的字符串输入输出(fgets/fputs)。
《C语言程序设计》(电子工业出版社)一课一练 第56练
第11章 文件
11.4 文件的字符串输入输出(fgets/fputs)
1、 单项选择题(本题共4小题)
1、已知char str[15];,执行fgets(str, 10, fp);后,str 数组中最多能存储的有效字符个数是( )
A. 9
B. 10
C. 14
D. 15
【答案】A
【解析】fgets 函数的第二个参数 n 表示最多读取 n-1 个字符,剩余 1 个位置用于自动添加串结束符'\0',因此 10-1=9 个有效字符,其他选项不符合函数参数规则。
2、下列关于 fputs 函数的调用,合法的是( )
A. fputs ('Hello', fp);
B. char s [] = "World"; fputs (s, fp);
C. fputs (12345, fp);
D. fputs ("Hi
", "test.txt");
【答案】B
【解析】fputs 的第一个参数必须是字符串(字符串常量、字符数组名或字符串指针),第二个参数是文件指针。A 是字符常量非法,C 是整数非法,D 第二个参数是文件名而非文件指针,只有 B 符合语法规则。
3、fgets 函数在读取字符串时,不会提前终止读取操作的情况是( )
A. 遇到换行符
B. 遇到文件结束符 EOF
C. 读取到 n-1 个字符
D. 遇到空格字符
【答案】D
【解析】fgets 的终止条件是读取到 n-1 个字符、遇到换行符或 EOF,空格是普通字符,不会触发终止,会被正常读取,因此 D 选项不会导致提前终止。
4、当 fgets 函数读取字符串失败或到达文件末尾时,其返回值是( )
A. 0
B. -1
C. NULL
D. 字符数组的首地址
【答案】C
【解析】fgets 函数读取成功时返回存储字符串的字符数组首地址,若读取失败或已到文件末尾,返回空指针 NULL,程序可通过该返回值判断读取状态。
2、 判断题(本题共3题)
1、fgets 函数读取字符串后,会自动在字符数组的末尾添加串结束符'\0',保证存储的是合法的 C 语言字符串。( )
【答案】√
【解析】fgets 的设计逻辑是预留一个字符位置存储'\0',无论读取到终止条件还是完成 n-1 个字符读取,都会自动添加该结束符,确保字符数组符合 C 语言字符串格式。
2、fputs 函数向文件写入字符串时,会将字符串末尾的'\0'一并写入文件中。( )
【答案】×
【解析】'\0'是 C 语言字符串在内存中的结束标识,并非字符串的有效内容,fputs 仅写入字符串的有效字符部分,不会将'\0'写入文件。
3、使用rewind(fp)函数后,文件内部的位置指针会被移动到文件的末尾位置。( )
【答案】×
【解析】rewind 函数的作用是将文件内部位置指针移动到文件的起始位置,而非末尾;若要移动到末尾可使用 fseek 函数。
3、 填空题(本题共2题)
1、fgets 函数的返回值规则为:读取成功时返回____,读取失败或到达文件末尾时返回 NULL。
【答案】存储字符串的字符数组的首地址
【解析】fgets 返回字符数组首地址,方便程序直接使用读取后的字符串进行后续操作;同时通过返回 NULL 明确标识读取异常,让程序能快速判断读取状态。
2、使用 fputs 函数向文件写入多行字符串时,若需要换行,必须在字符串末尾手动添加____,否则所有字符串会连续存储在同一行。
【答案】换行符'
'
【解析】fputs 不会自动添加换行符,仅按传入的字符串内容写入文件;手动添加'
'后,文件存储时会将后续内容换行显示,符合文本文件的换行格式要求。
4、 读程序写结果题(本题共1题)
1、阅读下面的 C 语言程序,写出程序运行后的输出结果。
【程序代码】
#include <stdio.h>
int main() {
FILE *fp = fopen("temp.txt", "w+");
fputs("C语言", fp);
rewind(fp);
char buf[20];
fgets(buf, 20, fp);
printf("读取到的内容:%s
", buf);
fclose(fp);
return 0;
}
【答案】
程序运行结果:
读取到的内容: C 语言
【解析】
程序以读写模式打开 temp.txt 文件,先用 fputs 将字符串 "中职 C 语言" 写入文件,再通过 rewind 将文件位置指针移到文件开头,接着用 fgets 读取文件中的字符串到 buf 数组,最后输出读取到的内容。由于写入的字符串长度远小于 20,fgets 会完整读取全部内容并自动添加'\0',因此输出结果与写入的字符串一致。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$