大家好呀!👋这个是付青云同学的博客!😁 目前一直在学习C语言。🐸 写博客是为了来记录我的学习过程,同时也希望通过博客能够帮助到需要帮助的人。 如果我的博客可以帮助到你,不妨给我一个关注哦😁
文件操作
文件名包含:文件路径+文件名主干+文件名后缀 如:C:\Program Files (x86)\test.txt
文件的打开和关闭
文件指针
缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。 这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE
打开和关闭文件
文件使用方式 | 含义 | 如果指定文件不存在 |
---|
“r”(只读) | 为了输入数据,打开一个已经存在的文本文件 | 出错 | “w”(只写) | 为了输出数据,打开一个文本文件 | 建立一个新文件 | “a”(追加) | 向文本文件添加数据 | 建立一个新文件 | “rb”(只读) | 为了输入数据,打开一个二进制文件 | 出错 | “wb”(追加) | 为了输出数据,打开一个二进制文件 | 建立一个新文件 | “ab”(读写) | 像一个二进制文件尾添加数据 | 出错 | “r+”(读写) | 为了读和写,打开一个文本文件 | 出错 | “w+”(读写) | 为了读和写,建立一个新的文件 | 建立一个新文件 | “a+”(读写) | 为了打开一个文件,在文件尾进行读写 | 建立一个新文件 | “rb+”(读写) | 为了读和写打开一个二进制文件 | 出错 | “wb+”(读写) | 为了读和写,新建一个新的二进制文件 | 建立一个新文件 | “ab+”(读写) | 打开一个二进制文件,在文件尾进行读和写 | 建立一个新文件 |
如:
int main()
{
FILE* pf = fopen("abc.txt", "r");
if (pf == NULL)
{
perror("fopen");
return 1;
}
fclose(pf);
pf = NULL;
return 0;
}
代码的顺序读写
功能 | 函数名 | 适用于 |
---|
字符输入函数 | fgetc | 所有输入流 | 字符输出函数 | fputc | 所有输出流 | 文本行输入函数 | fgets | 所有输入流 | 文本行输出函数 | fputs | 所有输出流 | 格式化输入函数 | fscanf | 所有输入流 | 格式化输出函数 | fprintf | 所有输出流 | 二进制输入 | fread | 文件 | 二进制输出 | fwrite | 文件 |
文件的随机读写
作用:根据文件指针的位置和偏移量来定位文件指针(将文件指针移到指定位置)
int fseek ( FILE * stream, long int offset, int origin );
#include <stdio.h>
int main()
{
FILE* pf = fopen("test.txt", "wb");
if (pf == NULL)
{
perror("fopen");
exit(-1);
}
fputs("wo 1234 kenobi", pf);
fseek(pf, 3, SEEK_SET);
fputs("jiao", pf);
fclose(pf);
pf = NULL;
return 0;
}
运行后test.txt里显示为
wo jiao kenobi
作用:返回文件指针相对于起始位置的偏移量(获取文件指针的当前位置)
long int ftell ( FILE * stream );
用法:
#include <stdio.h>
int main()
{
FILE* pf = fopen("test.txt", "wb");
if (pf == NULL)
{
perror("fopen");
exit(-1);
}
fputs("wo 1234 kenobi", pf);
int size = ftell(pf);
printf("%d\n", size);
fseek(pf, 3, SEEK_SET);
size = ftell(pf);
printf("%d\n", size);
fclose(pf);
pf = NULL;
return 0;
}
运行 如图:
作用:让文件指针的位置回到文件的起始位置
void rewind ( FILE * stream );
用法:
int main()
{
FILE* pf = fopen("test.txt", "wb");
if (pf == NULL)
{
perror("fopen");
exit(-1);
}
fputs("wo 1234 kenobi", pf);
int size = ftell(pf);
printf("%d\n", size);
rewind(pf);
size = ftell(pf);
printf("%d\n", size);
fclose(pf);
pf = NULL;
return 0;
}
运行 如图:
|