就教二级C语言题 选择题求解

来源:百度知道 编辑:UC知道 时间:2024/05/11 00:10:22
(35)假定当前盘符下有两个文本文件,如下
文件名 a1.txta2.txt
内容123# 321#
则下面程序段执行后的结果为
#include "stdio.h"
void fc(FILE *p)
{ char c;
while((c=fgetc(p))!=′#′)putchar(c);}
main()
{ FILE *fp;
fp=fopen("a1.txt","r");
fc(fp);
fclose(fp);
fp=fopen("a2.txt","r");
fc(fp);
fclose(fp);
putchar(′\n′);}
A)123321
B)123
C)321
D)以上答案都不正确
详细点讲一下,谢谢!

答案是A

#include "stdio.h"
void fc(FILE *p)
{ char c;
while((c=fgetc(p))!=′#′)putchar(c);}/*在文件中读取字符,一个一个的读,读了就输出来显示,直到文件读到#的位置也就是文件字符读完了,#不显示出来*/
main()
{ FILE *fp;
fp=fopen("a1.txt","r");/*以只读的方式打开文本本目录下文件a1.txt,并把文件打开后的指针付值给文件类型指针fp*/
fc(fp); /*将文件指针交给函数fc去读出文件的字符*/
fclose(fp); /*关闭被打开的文件*/
fp=fopen("a2.txt","r"); /*同打开第一个文件一样*/
fc(fp);
fclose(fp);
putchar(′\n′);}/*在最后输出的字后面换行*/

答案为A:
while((c=fgetc(p))!=′#′)putchar(c)句中的fgetc是从文件中取出一个字符,putchar(c)的作用是把取出的字符输出,while循环直到取出的字符为‘#’时结束。fc函数的作用就是把文本的字符全部取出并输出,这样经过以下语句:
fp=fopen("a1.txt","r");
fc(fp);
fclose(fp);
fp=fopen("a2.txt","r");
fc(fp);
就把两个文本中的字符全部取出并显示了出来

我试了试楼主的代码 ,一点也没错啊,就选A

有什么错,你讲出来

解释一下吧
函数fc的功能就是输出字符,只要读到的字符不是‘#’,就一直读取并输出,读到‘#’不输出就退出,主函数就是把两个文件的内容按字符读出来并打印出来,不包括#号