有以下程序: #include<stdio。h> #include<stdlib.h> main() {FILE*fp; char ch,str[5]; if((fp=fopen("file.txt","wb+"))==NULL) {printf("err

admin2021-06-15  57

问题 有以下程序:
#include<stdio。h>
#include<stdlib.h>
main()
{FILE*fp;
char ch,str[5];
if((fp=fopen("file.txt","wb+"))==NULL)
{printf("error!\n");exit(0);}
ch=getchar();
while(ch!=’!’)
{fputc(ch,fp);
ch=getchar();
}
rewind(fp);
do{
fgets(str,4,fp);
puts(str);
}
while(!feof(fp));
felose(fp);
}
程序运行时输入:c:\\test!<回车>,则程序的输出结果是(  )。

选项 A、c:\
\te
st
B、c:\test
C、c:tes
t
D、c:\t
est

答案A

解析 分析程序可知,程序是首先以可写方式打开文件file.txt,然后使用getchar()逐个读入输入的字符,写到文件file.txt中,直到输入的字符是’!’,停止写入文件;然后使用rewind()将文件指针定位到文件开头位置,再调用fgets()函数,将文件中的内容读入str字符数组中,再用puts()输出,直到遇到文件结尾符,关闭文件。其中写入文件时是逐个写入的,而读出时调用fgets(str,4,fp),由此可知fgets至多读取3个字符到str,然后在结尾自动加上“\0”字符,作为字符串的结尾标志,使用puts输出时,输出3个字符并完成换行,当输入c:\\test!<回车>时,输出为:
c:\
\te
st
故答案为A选项。
转载请注明原文地址:https://jikaoti.com/ti/Rlz0FFFM
0

最新回复(0)