第九章_文件

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第九章文件

一、单项选择题

【9.1】要打开一个已存在的非空文件"file"用于修改,选择正确的语句____。

A) fp=fopen("file", "r"); B) fp=fopen("file", "a+");

C) fp=fopen("file", "w"); D) fp=fopen('file", "r+");

【9.2】当顺利执行了文件关闭操作时,fclose函数的返回值是。

A) -1 B) TRUE C) 0 D) 1

【9.3】fscanf函数的正确调用形式是。

A) fscanf (文件指针, 格式字符串, 输出列表);

B) fscanf (格式字符串, 输出列表, 文件指针);

C) fscanf (格式字符串, 文件指针, 输出列表);

D) fscanf (文件指针, 格式字符串, 输入列表);

【9.4】使用fgetc函数,则打开文件的方式必须是。

A) 只写 B) 追加 C) 读或读/写 D) 参考答案B和C都正确

【9.5】C语言中标准输入文件stdin是指。

A) 键盘 B) 显示器 C) 鼠标 D) 硬盘

二、程序填空题

【9.6】下面程序的功能是统计文件中的字符的个数。

#include

main()

{ long num=0;

① *fp;

if((fp=fopen("fname.dat", "r"))==NULL)

{ printf("Can't open the file! ");

exit(0);

}

while( ② )

{ fgetc(fp);

num++;

}

printf("num=%d\n",num);

fclose(fp);

}

【9.7】下面程序的功能是把从键盘输入的文件(用 @ 作为文件结束标志)复制到一个名为second.txt的新文件中。

#include

FILE *fp;

main()

{ char ch;

if((fp=fopen( ① ))==NULL)

exit(0);

while((ch=getchar())!='@')

fputc(ch,fp);

② ;

}

【9.8】下面程序的功能是将磁盘上的一个文件复制到另一个文件中,两个文件名在命令行中给出(假定给定的文件名无误)。

#include

main(int argc,char *argv[])

{ FILE &f1,*f2;

if(argc< ① )

{ printf("The command line error! ");

exit(0);

}

f1=fopen(argv[1], "r");

f2=fopen(arhv[2], "w");

while( ② )

fputs(fgetc(f1), ③ );

④ ;

⑤ ;

}

【9.9】下面程序的功能是键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。

#include

main()

{ char str[100];

int i=0;

FILE *fp;

if((fp=fopen("test.txt", ① ))==NULL)

{ printf("Can't open the file.\n");

exit(0);

}

printf("Input a string:\n");

gets(str);

while(str[i])

{ if(str[i]>= 'a'&&str[i]<= 'z')

str[i]= ② ;

fputc(str[i],fp);

i++;

}

fclose(fp);

fp=fopen("test.txt", ③ );

fgets(str,strlen(str)+1,fp);

printf("%s\n",str);

fclose(fp);

}

【9.10】下面程序的功能是将从终端上读入的10个整数以二进制方式写入名为"bi.dat"的新文件中。

#include

FILE *fp;

main()

{ int i, j;

if(( fp=fopen( ① , "wb" )) == NULL )

exit (0);

for( i=0;i<10;i++ )

{ scanf("%d", &j );

fwrite( ② , sizeof(int), 1, ③ );

}

fclose( fp);

}

【9.11】以字符流形式读入一个文件,从文件中检索出六种C语言的关键字,并统计、输出每种关键字在文件中出现的次数。本程序中规定:单词是一个以空格或'\t'、 '\n'结束的字符串。

#include

#include

FILE *cp;

char fname[20], buf[100];

int num;

struct key

{ char word[10];

int count;

}keyword[]={ "if", 0, "char", 0, "int", 0,

"else", 0, "while", 0, "return", 0};

char *getword (FILE *fp)

{ int i=0;

char c;

while((c=getc(fp)) != EOF && (c==' '||c=='\t'||c=='\n')) ;

if( c==EOF ) return (NULL) ;

else buf[i++]=c;

while((c = ① && c!= ' ' && c!= '\t' && c!= '\n' )

buf[i++] = c;

buf[i]= '\0';

return(buf);

}

lookup(char *p)

{ int i;

char *q, *s;

for(i=0;i

{ q = ② ;

s=p;

while( *s && (*s==*q) )

{ ③

}

if( ④ )

{ keyword[i].count++;

break;

}

}

return;

}

main()

{ int i;

char *word;

printf("Input file name:");

scanf("%s", fname);

if((cp=fopen(fname, "r")) ==NULL )

{ printf("File open error: %s\n", fname);

exit(0);

}

num = sizeof(keyword) / sizeof(struct key);

while( ⑤ )

lookup(word);

fclose(cp);

for(i=0;i

printf("keyword:%-20scount=%d\n",keyword[i].word,keyword[i].cou nt);

}

【9.12】下面程序的功能是从键盘接受姓名(例如:输入"ZHANG SAN"),在文件"try.dat"中查找,若文件中已经存入了刚输入的姓名,则显示提示信息;若文件中没有刚输入的姓名,则将该姓名存入文件。要求:⑴若磁盘文件"try.dat",已存在,则要保留文件中原来的信息;若文件

"try.dat"不存在,则在磁盘上建立一个新文件;⑵当输入的姓名为空时(长度为0),结束程序。

#include

main()

{ FILE *fp;

int flag;

char name[30], data[30];

if((fp=fopen("try.dat", ①))==NULL )

{ printf("Open file error\n");

exit(0);

}

do

{ printf("Enter name:");

gets(name);

if( strlen(name)==0 )

break;

strcat(name, "\n");

②;

flag=1;

while( flag && (fgets(data, 30, fp) ③) )

if( strcmp(data, name) == 0 )

④ ;

if( flag )

fputs(name, fp);

else

printf("\tData enter error !\n");

} while( ⑤ );

fclose(fp);

}

【答案:】

【9.1】答案:D

注释:函数fopen中的第二参数是打开模式,"r"模式是只读方式,不能写文件;"a+"模式是读/追加方式,允许从文件中读出数据,但所有写入的数据均自动加在文件的末尾;"w"模式是写方式,允许按照用户的要求将数据写入文件的指定位置,但打开文件后,首先要将文件的内容清空。"r+"模式是读/写方式,不但允许读文件,而且允许按照用户的要求将数据写入文件的指定位置,且在打开文件后,不会将文件的内容清空。本题的要求是"修改"文件的内容,因此只能选择答案D。

【9.2】答案:C

【9.3】答案:D

【9.4】答案:C

【9.5】答案:A

【9.6】答案:① FILE ② !feof(fp)

注释:FILE 是文件结构类型名。feof()是测试文件结束标志的函数。【9.7】答案:① "second.txt" ② fclose(fp)

【9.8】答案:① 3 ② !feof(f1)或feof(f1)==0 ③ f2 ④ fclose(f2) ⑤ fclose(f1)

注释:程序中使用了带参数的main函数,其中整型参数argc为命令行中字符串的个数,此程序运行时输入的字符串有可运行程序名、文件1和文件2,故argc不应小于3。字符串指针argv[0]指向可运行程序名、字符串指针argv[1]指向输入文件名、字符串指针argv[2]指向输出文件名,由上所述②处给出循环条件是输入文件是否结束,③处需要填出输出文件名。最后两处是关闭两个文件,原则上关闭文件没有顺序要求,但习惯上是后打开的文件先关闭。

【9.9】答案:① "w" ② -32 ③ "r"

【9.10】答案:① "bi.dat" ② &j ③ fp

【9.11】答案:① fgetc(fp))!=EOF ② &keyword[i].word[0]③ s++; q++;

④ *s==*q

⑤ (word=getword(cp))!=NULL

【9.12】答案:① "a+" ② rewind(fp) ③ !=NULL ④ flag=0 ⑤ ferror(fp)==0

相关文档
最新文档