读写文件操作与普通的printf、scanf
代码 | 操作平台 | 功能 |
---|---|---|
printf | 屏幕 | 标准输出 |
scanf | 键盘 | 标准输入 |
perror | 屏幕 | 标准输出错误 |
系统文件
功能 | 代码 | 宏定义 |
---|---|---|
标准输入 | stdin | 0 |
标准输出 | stdout | 1 |
标准错误 | stderr | 2 |
系统文件在应用程序执行时会自动打开,结束时系统自动关闭(隐式回收)
文件指针和普通指针的相同和区别:
定义方式:
采用了系统特定的结构体FILE来处理。
FILE *fp = NULL;
操作文件方式:
开辟指针
借助文件操作函数来改变fp为空和野指针。
fopen();
//函数相当于C里面的malloc函数来开辟空间
操作文件:
使用文件读写来完成
fput,fputs,fgetc,fgets,fread,fwrite函数等
文件分类:
设备文件:
屏幕,显卡,键盘,磁盘等
磁盘文件:
文本文件:
由ASCII码写成
二进制文件:
由bin二进制编码完成
文件操作的一般步骤:
-
打开文件 fopen()函数
-
读写文件:fputc,fputs等函数
-
关闭文件:fclose()函数
打开、关闭文件函数
//fopen函数原型
FILE *fopen(const char *filename,const char *mode);
参数1 const char *filename的filename
表示的是文件访问路径,可以是绝对路径也可以是相对路径
参数2 const char* mode
文件打开权限
参数 | 操作 |
---|---|
r | 只读方式打开文件,不存在则报错 |
w | 只写方式打开文件,如果文件存在就直接覆盖文件重新写,如果不存在则创建文件再写 |
w+ | 写、读方式打开文件,如果文件存在则覆盖文件重新写,如果不存在就创建文件再写 |
r+ | 读、写方式打开文件,如果文件不存在则失败 |
a | 以再文件以后的内容后面追加来打开文件 |
b | 以二进制形式打开文件 |
可以复合则使用如(ab)
fopen函数打开成功则返回文件的文件指针,失败则返回NULL
文件访问路径:
绝对路径:
从磁盘的根目录开始描写 如:C:/User/test.txt
书写方法:
情况 | 书写方法 |
---|---|
Windows下特有 | C:\\user\\test.txt |
Windows和linux通用 | C:/User/test.txt |
相对路径:
针对于启动项的环境。
如果是使用xxx.exe来执行,就是相对于xxx.exe的文件路径
如果是用VS环境下,就值在.vcxproj所在目录的文件路径
具体操作函数:
文件结束标记:
也就是会返回一个EOF,在宏定义上EOF也就是-1的意思,可以通过fp和EOF来判断文件是否读取到结束。
按字符写文件fputc:
//函数原型
int fgetc(FILE *stream)
参数
FILE *stream
stream也就是带读取的文件的fp(指针)
返回值
成功:就是读到对应字符的ASCII码
失败:返回-1
实现demo:
https://www.cnblogs.com/beautiful7/p/13915853.html
feof()函数
//函数原型
int feof(FILE *stream);
参数:
FILE *stream
返回值:
返回条件 | 返回值 |
---|---|
到达文件末尾 | 真(非0值) |
没有到达文件末尾 | 假(0值) |
作用:
用来判断是否到达文件末尾,对于二进制文件和字符文件都OK
特征:
调用feof函数来判断,必须使用正确的调用指针来处理。
fgets()函数
作用:
获取一个字符串,用\n来作为结尾标记,自动在最后添加'\0',如果空间够大就会把\n也读入,如果不够就舍弃\n,但是\0必有
//函数原型
char *fgets(char *str,int size,FILE *stream);
参数:
参数 | 作用 |
---|---|
char *str | 表示需要提取到的字符串首地址 |
int size | 表示需要提取的空间大小 |
FILE *stream | 表示文件指针 |
返回值:
成功:返回读取到的字符串
失败:返回NULL
实现demo:
https://www.cnblogs.com/beautiful7/p/13915880.html
fputs()函数
功能:
写入一个字符串,如果字符串中没有\n就不会写\n
//函数原型
int fputs(const char *str,FILE *stream);
参数
参数 | |
---|---|
const char *str | 字符串首地址 |
FILE *stream | 文件指针 |