目录
一.前言
一.FILE结构类型
二.fopen函数
三.fclose函数
四.各类常用文件操作函数
1.fscanf
2.fprintf
3.fread
4.fwrite
5.fgetc
6.fputc
7.fgets
8.fputs
9.fseek
大家好,我是大鹏,今天带大家一起来学习C语言进阶中的文件操作部分,本节课中将会讲到文件操作中的各种函数以及使用方法
FILE类型是一个结构体,.
FILE 是 C语言文件结构定义, 打开文件和文件操作要用到这类结构
truct file 的最重要成员在这展示.
1.mode_t f_mode;
文件模式确定文件是可读的或者是可写的(或者都是), 通过位 FMODE_READ 和FMODE_WRITE. 你可能想在你的 open 或者 ioctl 函数中检查这个成员的读写许可, 但是不需要检查读写许可, 因为内核在调用你的方法之前检查. 当文件还没有为那种存取而打开时读或写的企图被拒绝, 驱动甚至不知道这个情况.
2.loff_t f_pos;
当前读写位置. loff_t 在所有平台都是 64 位( 在 gcc 术语里是 long long ). 驱动可以读这个值,如果它需要知道文件中的当前位置, 但是正常地不应该改变它; 读和写应当使用它们作为最后参数而收到的指针来更新一个位置, 代替直接作用于 filp->f_pos. 这个规则的一个例外是在 llseek 方法中, 它的目的就是改变文件位置.
3.unsigned int f_flags;
这些是文件标志, 例如 O_RDONLY, O_NONBLOCK, 和 O_SYNC. 驱动应当检查O_NONBLOCK 标志来看是否是请求非阻塞操作; 其他标志很少使用. 特别地, 应当检查读/写许可, 使用 f_mode 而不是f_flags. 所有的标志在头文件
这些只了解就行了
fopen函数是用来打开文件的,fopen在MSDN中的介绍如下
FILE* pc=fopen("文件路径","具体操作");//打开文件
至于这个"具体操作"分为以下几个操作
wt” 只写打开或建立一个文本文件,只允许写数据
“at” 追加打开一个文本文件,并在文件末尾写数据
“rb” 只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+” 读写打开一个文本文件,允许读和写
“wt+” 读写打开或建立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或在文件末追加数 据
“rb+” 读写打开一个二进制文件,允许读和写
“wb+” 读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据对于文件使用方式有以下几点说明:1. 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:r(read): 读w(write): 写a(append): 追加t(text): 文本文件,可省略不写b(banary): 二进制文件+: 读和写
fclose是关闭某个文件,它的返回值是int型,具体操作如下
FILE* pc=fopen("文件路径","具体操作");//打开文件
fclose(pc);//关闭pc文件
在这里我们可以对比一下scanf函数的用法
通过对比我们可以发现,fscanf函数只是多了个文件流,所以fscanf是从文件中读取数据,而不是从控制台输入数据。fscanf和scanf相同不识别fscanf函数和scanf函数。
从fprintf对比我们可以参考一下printf函数
与printf不同的就是,fprintf会同时将数据写入变量中,同时将按照要求从文件中输出信息。
fread函数,来从件中读取数据,其中第一个参数为,将读取的数据放入*buffer中,size为一个单位所占的字节数,count是单位数的数量,而stream为文件的FILE指针。
也可以理解成一种输入函数,从文件中读取。
fwrte 是一种写入函数,将数据写入到文件里。与fread类似,但是fread只是从文件中读取数据,而不会将数据写入到文件中,这里是将*buffer指针指向的数据变量写入到stream文件中。
从文件中获取第一个字符
将一个字符写入到文件中
这里的n是指要获取的字符串长度。
从文件中获取一段字符串
将一段字符串写入到文件中
fseek 第一个参数是文件指针,也就是你要操作的文件,第二个参数是偏移量,第三个参数是,起始位置(这里的起始位置,不是指文件的起始位置,这个其实位置是可以自己定义的)
这里的三个变量的家可以参考一下
在fseek函数中,这三个数值,可以用在第三个参数里,非常方便。
具体fseek的用法如下。
fseek(pf, 5, SEEK_SET);
ch = fgetc(pf);//e
printf("%c\n", ch);
比如说在这个操作中,pf文件中是abcdef,然后输出的将是字母e