C语言库函数包括文件的打开、关闭、读、写、 定位等各种操作
要操作文件,首先要声明一个文件指针变量FILE* fp;
-
打开文件
调用fopen打开文件
文件指针名=fopen(文件名,使用文件方式); PS:这里文件路径必须是带双斜杠\\
其中,
1.
文件使用方式 意 义
“rt” 只读打开一个文本文件,只允许读数据
“wt” 只写打开或建立一个文本文件,只允许写数据
“at” 追加打开一个文本文件,并在文件末尾写数据
“rb” 只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+” 读写打开一个文本文件,允许读和写
“wt+” 读写打开或建立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或在文件末追加数 据
“rb+” 读写打开一个二进制文件,允许读和写
“wb+” 读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据
r:读文件
w:写文件
a:在文件末尾追加
t:文本文件,可省略
b:二进制文件
+:读与写
2.只用r时,只能打开一个已存在文件,并读取数据
3.用“w”打开的文件只能向该文件写入。 若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。
4.把一个文本文件读入内存时,要将ASCII码转换成二进制码, 而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码,因此文本文件的读写要花费较多的转换时间。对二进制文件的读写不存在这种转换。
5.文件使用完应该关闭,调用fclose函数。
-
关闭文件
简单地调用fclose(fp);
-
读写文件
字符读写函数 :fgetc和fputc
字符变量=fgetc(文件指针); PS:判断字符变量是否为EOF来判断是否到达文件尾部
1. 在fgetc函数调用中,读取的文件必须是以读或读写方式打开的。
2. 在文件内部有一个位置指针。用来指向文件的当前读写字节。在文件打开时,该指针总是指向文件的第一个字节。使用fgetc 函数后,该位置指针将向后移动一个字节。 因此可连续多次使用fgetc函数,读取多个字符。应注意文件指针和文件内部的位置指针不是一回事。文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。文件内部的位置指针用以指示文件内部的当前读写位置,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的。
fputc(字符,文件指针);
1.被写入的文件可以用、写、读写,追加方式打开,用写或读写方式打开一个已存在的文件时将清除原有的文件内容,写入字符从文件首开始。如需保留原有文件内容,希望写入的字符以文件末开始存放,必须以追加方式打开文件。被写入的文件若不存在,则创建该文件。
2. 每写入一个字符,文件内部位置指针向后移动一个字节。
3. fputc函数有一个返回值,如写入成功则返回写入的字符, 否则返回一个EOF。可用此来判断写入是否成功。
字符串读写函数:fgets和fputs
fgets(字符数组名,n,文件指针);从fp所指的文件中读出n-1个字符送入字符数组中。
1. 在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。
2. fgets函数也有返回值,其返回值是字符数组的首地址。
fputs(字符串,文件指针) PS:字符串可以是字符串常量,也可以是字符数组名, 或指针变量
数据块读写函数:freed和fwrite
可用来读写一组数据,如一个数组元素,一个结构变量的值
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
buffer表示存放输入、输出数据的首地址, size表示数据块的字节数,count 表示要读写的数据块块数,fp 表示文件指针。
格式化读写函数:fscanf和fprinf
fscanf(文件指针,格式字符串,输入列表);
fprintf(文件指针,格式字符串,输出列表);
-
其他操作
rewind(文件指针); 它的功能是把文件内部的位置指针移到文件首。
fseek(文件指针,位移量,起始点); 用来移动文件内部位置指针。其中位移量是long型,后加L
起始点 表示符号 数字表示
——————————————————————————
文件首 SEEK_SET 0
当前位置 SEEK_CUR 1
文件末尾 SEEK_END 2
文件指针到当前内部位置指针的相对位移=ftell(文件指针) ; 用来获取文件大小
fseek(fp, 0, SEEK_END);
length = ftell(fp);
feof(文件指针);
功能:判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。
ferror(文件指针);
功能:检查文件在用各种输入输出函数进行读写时是否出错。 如ferror返回值为0表示未出错,否则表示有错。
clearerr(文件指针);
功能:本函数用于清除出错标志和文件结束标志,使它们为0值。