选择题
有以下程序:
#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));
fclose(fp);
}
程序运行时输入:c:\\test! <回车>,则程序的输出结果是______。
【正确答案】
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选项。