选择题   有以下程序:
    #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选项。