目录
一、文件名
文件名包含三部分,文件路径+文件名主干+文件后缀
二、文件的打开与关闭
缓冲文件系统中,关键的的概念是文件类型指针,简称文件指针;
FILE* pf 文件指针变量
定义 pf是一个指向file类型的重镇变量,可以使pf指向某个文件的信息区(是一个结构体变量),通过该文件信息区的信息就能访问该文件。也就是说,通过指针变量能够找到与它相关联的文件。
文件在读写前应该打开文件,结束后应该关闭文件,在编写程序的时候,打开文件之后会返回一个FILE*指针变量来指向该文件,相当于建立了指针与文件的关系。
ANSIC规定用fopen打开文件,fclose关闭文件。
1.打开文件———fopen
由上图可知:
filename为
C字符串,包含要打开的文件的名称。
其值应遵循运行环境的文件名规范,并可以包括路径(如果系统支持)。
mode包含文件访问模式的C字符串,包括:
代码示例如下:
2.关闭文件———fclose
返回值:
如果流成功关闭,则返回零值。
失败时,返回EOF。
三、文件顺序的读写
首先我们要搞清楚输入流和输出流的概念,两个都是以内存为基准,输入流是从外设(键盘、扫描仪等)中读取数据,而输出流就是把内存中数据输出到外设或者其他地方,简单来说,输入流就是读数据,输出流就是写数据,
头文件都为stdio.h。
a.fgetc
变量:
pf指向标识输出流的FILE对象的指针
功能:
从流中获取字符,如果读取失败或者读取到文件末尾则会返回EOF.
返回值:
如果读取成功,返回读取的字符,提升为int,
如果位置指示器位于文件末尾,则会返回EOF并设置流的EOF指示器
如果读取失败,函数会返回EOF,并且设置其错误指示器.
代码如下:
b.fputc
变量:
character表示要输入的字符。
功能:
将字符写入流内部的位置指示器的位置并推进位置指示器。
返回值:
成功后,返回所写字符。
如果发生写入错误,将返回EOF并设置错误指示器
代码如下:
C.fpus
变量:
str包含要写入流的内容的C字符串。
功能:
将str指向的字符串复制到指定流中,直到遇到'\0'结束,并且'\0'不会复制到指定流中。
代码如下:
d.fgets
变量:
str为指向复制字符串读取的字符数组的指针
num为复制到str中的最大字符数
功能:
从流中获取字符串
从流中读取字符,并将其作为C字符串存储到str中,直到读取(num-1)个字符,或者到达换行符或文件结尾,以先发生的为准。
换行字符使fgets停止读取,但函数将其视为有效字符,并包含在复制到str的字符串中。
在复制到str的字符之后,会自动附加一个终止空字符。
代码如下:
e.fread
变量:
ptr:指向大小至少为(size*count)字节的内存块的指针,已转换为void*。
size:每个元素的大小,单位为字节。
count:元素的数量
功能:
从流读取数据块
从流中读取count元素数组,每个元素的大小为size字节,并将它们存储在ptr指定的内存块中。
返回值:
返回成功读取的元素总数。
f.fwrite
功能:
将数据块写入流;
size:要写入的每个元素的字节大小。
num:元素的数量
代码如下:
h.fscanf
返回值:
成功时,函数返回参数列表中成功填充的项目数。由于匹配失败、读取错误或到达文件结尾,此计数可以与预期的项数匹配,也可以小于(甚至为零)。
i.fscanf
功能:将格式化数据写入流
对比一组函数
四、文件的随机读写
1.fseek:根据文件的位置和偏移量来定位文件指针
2.ftell
返回文件指针相当于起始位置的偏移量,
3.rewind
让文件回到起始位置