C++文件操作方法小结
- 获取文件句柄
- fopen, fclose
fopen(filename, opentype): 按照opentype的方式打开指定文件,打开失败返回NULL,否则返回文件句柄。
打开类型的属性(属性可以相互组合):
字符 含义
────────────────────────────
r(read): 读
w(write): 写
a(append): 追加
t(text): 文本文件,可省略不写
b(banary): 二进制文件
+: 读和写
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
fclose(fp):关闭指定文件, 关闭成功返回0,否则返回非零数
- 读写文件
- fgets ,fputs: 字符串读写(字符)
fgets(str, n, FILE* fp):从fp中读一个字符串到str字符数组中,其中n表示从文件中读取出字符串的长度(会自动在最后一个字符上加上结束标志)
1. 在第n-1个字符之前读取到'\n'或者EOF,结束读入
2. 读入成功返回,字符数组首地址
fputs(str, fp):把str写入到fp文件中
- fread, fwrite: 数据块读写(数字变量,结构体)
fread(buffer,size,count,fp):从fp中读取每次读取size个字节,读取count次,全部存入buffer指针所指的地址中(buffer表示存储数据的首地址指针)
fwrite(buffer,size,count,fp): 从buffer中每次取size个字节,读取count,全部写入fp中
- fscanf, fprintf:格式化读写
fscanf(fp,”%d%s”,&i,s), fprintf(fp,”%d%c”,j,ch):与scanf, printf相似,只不过读写对象不是键盘和显示器,而是磁盘与文件
- rewind, fseek:随机读写
随机读写与上面的顺序读写不同的在于,文件指针可以移动到指定的位置,从而获取文件中某一部分数据。
rewind(fp):移动文件内部指针到文件首部
fseek(fp, (long)size, start_locate):表示把fp文件内部指针从start_locate开始移动size个字节(size一般是long类型,常数的话要在后面加L)
start_locate:有三种类型 文件首部-->SEEK—SET-->0,文件当前位置-->SEEK—CUR-->1,文件末尾-->SEEK—END-->2
fseek一般用于二进制文件,否则可能会计算错误,所以打开文件的时候可以以二进制的方式打开