一、打开文件
通俗来说,建立文件的各种有关信息,并使文件指针指向该文件
打开指定文件可使用fopen( )函数;
fopen函数原型
FILE *fopen(char *filename,char *mode);
使用mode模式打开指定的filename文件
- 打开成功,返回FILE类型的指针
- 打开失败,返回NULL
mode必须为字符串格式,头尾必用双引号括起来
mode 即文件中的访问方式
文件使用方式 | 意义 |
---|---|
“rt” | 只读打开一个文本文件,只允许读数据 |
“wt” | 只写打开或建立一个文本文件,只允许写数据 |
“at” | 追加打开一个文本文件,并在文件末尾写数据 |
“rb” | 只读打开一个二进制文件,只允许读数据 |
“wb” | 只写打开或建立一个二进制文件,只允许写数据 |
“ab” | 追加打开一个二进制文件,并在文件末尾写数据 |
“rt+” | 读写打开一个文本文件,允许读和写 |
“wt+” | 读写打开或建立一个文本文件,允许读和写 |
“at+” | 读写打开一个文本文件,允许读,或在文件末追加数据 |
“rb+” | 读写打开一个二进制文件,允许读和写 |
“wb+” | 读写打开或建立一个二进制文件,允许读和写 |
“ab+” | 读写打开一个二进制文件,允许读,或在文件末追加数据 |
以上均是从书中总结的,mode有点儿多 ,本人总结了一点方法
-
二进制文件 b
- 文本文件 t
- 读 r
- 写 w
- 追加 a
- 读写 +
-
“r" 打开文件时,该文件必须已经存在,且只能从该文件读出
-
"w"打开的文件只能向该文件写入;
若文件不存在,则以指定文件名建立该文件
若指定文件已存在,则将该文件删去,重建一个新文件 -
若要向一已存在的文件中追加信息,只能用"a"方式打开文件,若此时该文件不存在,则会新建一个文件
-
常用以下程序段打开文件
FILE *fp;
fp=fopen("e:\\code\\test.txt","r");
if(fp==NULL)
{
printf("\n不能打开e:\\code\\test.txt file!");
exit(1);退出程序
}
打开一个和可执行文件在相同路径下的文本文件 test.txt
FILE *fp;
fp=fopen("test.txt","r");
打开一个E盘下code文件夹下的文本文件 test.txt
FILE *fp;
fp=fopen("e:\\code\\test.txt","rt");\\第一个表示转义字符,第二个表示根目录
其中第一个反斜线表示转义字符,第二个反斜线表示根目录
FILE *fp;
fp=fopen("e:/code/test.txt","rt");
以上均属于嵌入式文件方法,下面将介绍交互式文件方法,即由键盘输入所要打开的文件名及路径
FILE *fp;
char filename[40];
gets(filename);
fp=fopen(filename,"r");
二、关闭文件
使用 fclose( ) 函数将指定的文件关闭,并将FILE文件指针的相关资源及所占用的缓冲区归还给系统
fclose 函数原型
int fclose (FILE *fp);
返回0,关闭成功;返回非0,有错误发生
三、获取文件属性
fileno函数(stdlib.h)
int fileno(FILE *fp); 返回所打开文件指针fp对应的文件描述字(handle_no)
filelength函数(io.h)
long filelength(int handle_no); 返回文件描述字(handle_no)对应的文件大小,以字节为单位
取得E盘下 code 文件夹下 test.txt 文件大小的程序
FILE *fp;
int fno,fsize;
fp=fopen("e:\\code\\test.txt","rt");
fno=fileno(fp);
fsize=filelength(fno);
fclose(fp);