读一个不允许读的文件时,也会出错。 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
{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
{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
{FILE *fp; int i,a[6]={1,2,3,4,5,6k};
第 38 页 共 38 页