原理:在物理内存中开辟一块空间,将磁盘中的文件复制进来进行操作
FILE *fopen(const char *falename,const char *mode);//第一个参数是文件路径,第二个参数是打开方式
FILE *pFile = fopen("G:\\c语言基础学习\\c.txt","r");//使用函数打开文件,并保存在pFile中
打开方式:
"r"("rt"):只读形式,文件必须存在
"w"("wt"):擦除写,当文件不存在时会创建文件
"a"("at"):接着写,在文件结尾继续写入,当文件不存在时会创建文件
"r+":可读可写,但文件必须存在
"w+":同"w"
"a+":同"a"
二级制模式(用二进制打开)
"rb":只读形式,文件必须存在
"wb":擦除写,当文件不存在时会创建文件
"ab":接着写,在文件结尾继续写入,当文件不存在时会创建文件
"rb+":可读可写,但文件必须存在
"wb+":同"wb"
"ab+":同"ab"
fopen_s:
errno_t fopen_s(FILE** pFile,const char *filename,const char *mode);//第一个参数是文件类型,剩余两个参数与fopen一样
fclose:
fclose(pFile);//关闭文件并保存
操作文件(一般成对使用)
fwrite与fread(一次写入/读取指定字节数)
size_t fwrite(const void *buffer,size_t size,size_t count,FILE *stream);
参数1:要写入文件的首地址,可以是字符串、数组和结构体
参数2、参数3:相乘为写入的字节数,一般2为sizeof(),3为数据的个数
参数4:文件指针
返回值:实际写入的字节数,写入失败返回0
fread
size_t fread(const void *buffer,size_t size,size_t count,FILE *stream);
参数与fwrite一样,只是反过来将文件写入数组中
返回值是实际读取的字节数
feof:
int __cdecl feof(FILE* _Stream);
返回值为0表示不再结尾,返回值为1表示在文件结尾
fwrite与fread可以读写结构体
fputs和fgets
int fputs(const char *str,FILE *stream);//写入成功返回0,失败返回EOF(-1)
char* fgets(const char *str,int n,FILE *stream);//读取成功返回str的地址,失败返回0
只能处理字符串类型的数据
fprintf和fscanf
int fprintf(FILE*const _Stream,char const*Format,...);
int fscanf(FILE*const _Stream,char const*Format,...);
参数1表示文件
参数2表示字符串的指针
剩下的为可选参数
fseek和ftell
int fseek(FILE*stream,long offset,int orgin);
long ftell(FILE*stream);
fseek:设置文件指针的位置
参数1:文件指针
参数2:文件输入指针相对基准的方位(注意使用long型整数)
参数3:设置指针基准(使用定义的宏来进行操作)
ftell:返回文件指针当前位置