c同步练习 下载本文

读一个不允许读的文件时,也会出错。 2)“rb”为读而打开一个二进制文件。其余功能与“r”相同。

3)“w”为写而打开文本文件。这时,如果指定的文件不存在,系统将用在fopen调用中指定的文件名建立一个新文件;如指定的文件已存在,则将从文件的起始位置开始写,文件中原有的内容将全部消失。

4)“wb”为写而打开一个二进制文件。其余功能与“w”相似,但从指定位置开始写。

5)“a”为在文件后面添加数据而打开文本文件。这时,如指定的文件不存在,系统将用在fopen调用中指定的文件名建立一个新文件;如果指定的文件已经存在,则文件中原有的内容将保存,新的数据写在原有内容之后。 6)“ab”为在文件后面添加数据而打开一个二进制文件,其余功能与“a”相同。

7)“r+”为读和写而打开文本文件。用这种方式时,指定的文件应当已经存在。既可以对文件进行读,也可对文件进行写,在读和写操作之间不必关闭文件。只是对于文本文件来说,读和写总是从文件的起始位置开始。在写新的数据时,只覆盖新数据所占的空间,其后的老数据并不丢失。 8)“rb+”为读和写而打开一个二进制文件。功能与“r+”相同。只是在读和写时,或以由位置函数设置读和写的起始位置,也就是说不一定从文件的起始位置开始读和写。

9)“w+”首先建立一个新文件,进行写操作,随后可以从头开始读,如指定的文件已经存在,则原有的内容将全部消失。

10)“wb+”功能与“w+”相同;只是在随后的读和写时,可以由位置函数设置读和写的起始位置。

11) “a+”功能与“a”相同;只是在文件尾部添加新的数据之后,可以从头开始读。 12)“ab+”功能与“a+”相同;只是在文件尾部添加新的数据之后,可以由位置设置开始读的起始位置。 四:关闭文件

1. 当对文件的读(写)操作完成之后,必须将它关闭,关闭文件可以调用库函数fclose来实现。 2.fclose函数的调用形式如下: fclose(文件指针); FILE*fp;

fp=fopen(\ fclose(fp);

3.在完成了对文件的操作之后,应当关闭文件,否则文件缓冲区中的剩余数据就会丢失。 4.当成功地执行了关闭操作,函数返回0,否则返回非0。

五:调用getc(fgetc)和putc(fputc)函数进行输入: Putc(fputc)输出一个字符。 一般形式:putc(ch ,fp);

输出成功输出一个字符,否则返回EOF(-1) Ch=getc(pf)同上

六:判断文件结束函数feof

1. 文本文件(0----255)用EOF结束(-1) 2. 二进制文件用(-1)feof 七:fscanf和fprintf函数

习题:

1.如果需要打开一个已经存在非空文件”FILE”进行修改,正确的打开语句是: A:fp=fopen(“FILE”,”r”) B :fp=fopen(“FILE”,”ab+”) C :fp=fopen(“FILE”,”w+”) D :fp=fopen(“FILE”,”r+”) 2.下面说法正确的是_____ A对文件操作必须先关闭文件. B对文件操作必须先打开文件

C对文件操作无顺序要求

D对文件操作前必须先测试文件是否存在,然后在

打开文件.

3. 如果需要打开一个已经存在的非空文件“Demo”进行修改,下面正确的选项是 A fp=fopen(“Demo”,”r”); B fp=fopen(“Demo”,”ab+”); C fp=fopen(“Demo”,”w+”);

第 37 页 共 38 页

D fp=fopen(“Demo”,”r+”);

4. 有以下程序 #include main()

{FILE *fp; int a[10]={1,2,3,0,0},i; fp=fopen(\fwrite(a,sizeof(int),5,fp); fwrite(a,sizeof(int),5,fp); fclose(fp);

fp=fopen(\fread(a,sizeof(int),10,fp); fclose(fp);

for(i=0;i<10;i++) printf(\程序的运行结果是 A)1,2,3,0,0,0,0,0,0,0, B)1,2,3,1,2,3,0,0,0,0, C)123,0,0,0,0,123,0,0,0,0, D)1,2,3,0,0,1,2,3,0,0, 5.. 读取二进制文件的函数调用形式为:fread(buffer,size,count,fp); ,其中buffer代表的是 A)一个文件指针,指向待读取的文件 B)一个整型变量,代表待读取的数据的字节数 C)一个内存块的首地址,代表读入数据存放的地址 D)一个内存块的字节数 6. 有以下程序

fp=fopen(“d3.dat”,”w+b”); fwrite(a,sizeof(int),6,fp);

fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/

fread(a,sizeof(int),3,fp); fclose(fp); for(i=0;i<6;i++) printf(“%d,”,a[i]); }

程序运行后的输出结果是(A) A)4,5,6,4,5,6,

B)1,2,3,4,5,6,

C)4,5,6,1,2,3, D)6,5,4,3,2,1, 8. Fwrite 函数的一般调用形式是 Afwrite(buffer,count,size,fp) B:fwrite (fp,size,count,buffer);

C:fwrite(fp,count,size,buffer); D fwrite ( buffer,size,count,fp); 9.函数rewind 的作用是

A使文件位置指针重新返回文件的开始位置 B 将文件位置指针指向文件中所要求的特定位置

C 使文件位置指针指向文件的末尾

D 使文件位置指针自动移至下一个字符位置 10:fseek 函数的正确的调用形式是

A fseek(文件指针,起始点,位移量)

B fseek(文件指针,位移量,起始点) C fseek(位移量,起始点,文件指针) D fseek(起始点,位移量,文件指针)

;

#include main()

{FILE *fp; int k,n,a[6]={1,2,3,4,5,6}; fp=fopen(“d2.dat”,”w”);

fprintf(fp,”%d%d\\n”,a[0],a[1],a[2]); fprintf(fp, “%d%d%d \\n”,a[3],a[4],a[5]); fclose(fp);

fp=fopen(“d2.dat”,”r”);

fscanf(fp, “%d%d”,&k,&n); printf(“%d%d\\n”,k,n);

fclose(fp);}程序运行后的输出结果是(D) A)1 2 B)1 4

C)123 4 D) 123 456 7. 有以下程序 #include main ()

{FILE *fp; int i,a[6]={1,2,3,4,5,6k};

第 38 页 共 38 页