谭浩强C-文件
一、概述
1、通常把显示器定义为标准输出文件,把键盘定义为标准输入文件。
2、从文件编码方式,可分为ASCII码文件和二进制码文件。ASCII码文件也称为文本文件,每个字符对应一个字节,存放字符对应的ASCII码。二进制文件则按二进制编码方式来存放。比如对于51,ASCII码文件存放的是5和1对应的ASCII值:53和49,即0011 0101和0011 0001。而二进制文件中存储的即是51对应的二进制表示:即0011 0011。
二、操作文件的准备工作
1、对某文件操作前,在C语言里须先用一个指针变量指向文件类型,格式例如:FILE *fp;fp为指针变量名,关键字FILE表示为文件指针变量。可通过文件指针变量对文件进行各种操作。
2、在定义好文件指针后,须先通过“打开文件”来使文件指针变量指向某文件,并且使该文件处于“打开”状态(实质为建立该文件的各种信息),以进行后续操作。示例对名为与源程序同目录下的m3.txt这一ASCII码文件进行打开:
FILE *fp;
fp=fopen("m3.txt“,"打开方式");
3、对文件操作结束之后,要通过“关闭文件”来断开文件指针变量与该文件的指向关系。如:fclose(fp)。正常关闭文件后该函数返回值为0.
4、文件的“打开方式”:
r对应read only;w对应write only;a对应append;t对应txt,即ASCII文件;b对应binary,即二进制文件;+表示扩展,即可读可写。综上,有如下"打开方式":rt/wt/at/rb/wb/ab/rt+/wt+/at+/rb+/wb+/ab+/。当方式为write时(wt\wb\wt+\wb+)时,如果被操作文件不存在,则新建一文件,并写入该文件。当方式为append(at\ab\at+\ab+)时,被操作文件必须存在,否则会出错。
5、对文件操作时,一般可通过如下示例代码检测被操作文件是否存在:
FILE *fp; if((fp=fopen("m3.txt","at+"))==NULL) //若fopen函数返回空指针,即文件不存在 { printf("the file not exsit!\n"); //输出提示 getch(); //通过等待输入,使得操作人员可看到上句提示 exit(1); //退出程序 }
三、文件的操作
1、字符读写函数fgetc\fputc
每次操作读\写一字节(一字符)。
char ch;
ch=fgetc(fp1);
putc(ch,fp2);
2、字符串读写函数fgets\fputs
char s[];
fgets(s,n,fp1); //从fp1指向的文件中读取(n-1)个字符赋给字符串s,并在s最后加'\0'。
fputs(s,fp2); //将字符串s写入fp2
fputs("abc",fp2); //将字符串直接量写入fp2
3、数据块读写函数fread\fwrite
fread(buffer,size,count,fp)
从fp指向的文件中读取“count"块“size"大小的数据,存放到buffer指向的首地址。
fwrite(buffer,size,count,fp)
从buffer指向首地址的存储区中“count"块“size"大小的数据,写入fp指向的文件。