目录
前言
文件操作顾名思义就是可以利用我们的程序来操作指定计算机硬盘里的文件(分为以下几种方式:r(只读)、w(只写)、r+(可读可写)、w+(可读可写)、b(以二进制方式读写)),打开文件后千万记得关闭文件。
文件指针的定义
每个被使用过的文件都在内存中开辟了文件信息区,用以存放文件的相关信息,这些信息都包含在一个结构体中,该结构体名为FILE,包含在<stdio.h>头文件中。所以文件指针用FILE来定义,使用fopen函数来打开指定文件,例如:
int main(){
FILE *fp = NULL;
fp = fopen("text.txt", "r");//只读
fclose(fp);
}
以上代码为了安全先定义一个文件指针将其置空,然后再将文件指针指向名为 text.txt 的文件并且以只读(r)的方式打开,最后别忘了用fclose()函数关闭文件(如果不关闭文件的话,开辟文件所占用的内存是不会被释放的,有可能会造成内存泄漏等很严重的错误)。
需要注意的是文件指针指向的文件须是该程序所在文件夹
文件的打开方式
文件有多种打开方式
文件打开方式 | 含义 |
r | 只读(如果文件不存在则出错) |
w | 只写(如果文件不存在则创建一个文件,如果存在则覆盖原文件) |
a | 只写(从原文件尾部追加写入,不会覆盖原文件) |
r+ | 可读可写(如果文件不存在则出错) |
w+ | 相比于w可读可写 |
a+ | 相比于a可读可写 |
rb | 以只读的方式打开一个二进制文件(如果文件不存在则出错) |
wb | 以只写的方式创建一个二进制文件(如果文件不存在则创建一个文件) |
ab | 以追加写入的方式打开一个二进制文件 |
rb+ | 相比于rb可读可写 |
wb+ | 相比于wb可读可写 |
ab+ | 相比于ab可读可写 |
一部分文件操作所需要的函数和平常代码中的函数不同,比如字符输入函数在平时程序里是用getc();但在文件操作时得用fgetc();区别就是前面多了一个f表示这是用于操作文件的函数。
其他文件函数如下:
fgetc 字符输入函数
fgets 字符串输入函数
fputc 字符输出函数
fputs 字符串输出函数
fscanf 格式化输入函数
fprintf 格式化输出函数
fread 二进制输入函数
fwrite 二进制输出函数
fseek函数
fseek函数是文件操作中常用的一个函数,用于用于移动文件指针到所需要的位置。
定义为:
int fseek(FILE* stream,long offset,int origin)
其中stream是文件指针,offset是向后偏移量,origin是能是规定好的三个参数之一(SEEK_CUR(从当前位置开始)、SEEK_SET(从起始位置开始)、SEEK_END(从末尾位置开始))
SEEK_CUR可以用0来代替,SEEK_SET可以用1来代替,SEEK_END可以用2来代替。
例如:
fseek(fp, 10, 0);
将文件指针fp从起始位置开始向后移动10字节。
fseek(fp, 10, 1);
将文件指针fp从当前位置开始向后移动10字节。
fseek(fp, -10, 2);
将文件指针从末尾位置开始向后移动-10个字节,也就是向前移动10个字节。
文件读取结束判定
使用feof()函数
原型:int feof(FILE* _F)
用于判断文件指针是否到达文件末尾,如果是则返回0,否则返回非0值。
int main(){
FILE *fp = NULL;
fp = fopen("text.txt", "r");
if (feof(fp)==0)
printf("读取完毕!\n");
fclose(fp);
}
以上就是对文件操作的一些基本了解。