一、打开关闭文件
FILE *file = fopen("文件位置",模式)
文件位置可以是相对位置也可以是绝对位置写法,模式有
r或rb:读模式(不存在报错)
w或wb:写模式(存在清空,不存在创建新文件)
a或ab:追加模式(末尾添加,没有创建新文件)
r+或rb+:可读或者可写模式(不创建新文件)
w+或wb+:可读可写模式(存在清空,没有创建新文件)
a+或ab+:添加模式(末尾更改文件,没有创建新文件)
b是二进制意思,只在windows起作用,在linux效果一样
windows下以纯文本打开不用加b
关闭文件:fclose(上面文件的指针);
r:从头读
w:打开一次清空一次,只写一次,再次打开清空,写完后可以修改指针继续覆盖写,【但是不能读】
a:在末尾追加,修改指针后,再次写默认又到末尾添加了。,就算读失败,也不用像a+一样需要调用指针移动函数。
r+:只能读或者写,不能同时读和写,写也是从第一个开始覆盖,没有覆盖的保留
w+:打开就清空,写完后可以修改指针位置【再读或者覆盖写】
a+:从末尾追加,可以修改指针读取;
但是如果读取后没有重新设置光标操作,是无法鸡继续在末尾写的,
读取操作后只有调用了操作光标函数rewind或者fseek后都能fputc,自动调到末尾写了
rewind(FILE *) 重置指针到文件开头位置
二、文件的读写:
1、按照字符读写:fgetc,fputc
feof(FILE *) 0:没有到末尾,非0到末尾
fgetc(FILE *) : 从指针读取一个字符
fputc(int c,FILE *) : 将c转为字符写入文件
2、按照行读和写
fputs(* str,FILE *) 将字符串写入到文件中
fgets(* str,int size,FILE *) 从文件读取几个字符到字符串变量中
fgets中str用字符数组,size要小于等于数组大小,每次读取的时候遇到\n就会自动结束,哪怕读取到的数量小于指定的数字,但是\n也会在字符串中的
fputs往往文件里面添加字符串,要想换行,需要字符串中有换行符才行
str可以是字符串常量或者\0结束的字符数组
3、按照块读写文件
freader()
fwriter()
4、随机读写:
int fseek(FILE *,long offset,int where)
从where位置移动光标offset位置
offset:正数,往where右边移动,负数:往where左边移动
where取值: SEEK_SET:开头位置 SEEK_CUR:当前位置 SEEK_END:文件末尾
int ftell(FILE *)获取文件的读写位置
rewind(FILE *)重置光标到开头
5、删除文件 remove("文件名字符串,可以绝对也可以相对")
6、重命名 rename("path老文件名","path新文件名") 如果新的文件路径不一样,相当于是移动文件,如果路径不不存在就失败,需要系统上有完整的路径
7、更新缓冲区:fflush(FILE *) 刷新缓存到物理文件