一、 为什么使⽤⽂件?
文件是我们存放数据的地方,如果没有文件,我们写的程序会存在内存中,如果程序退出,空间就会被回收,我们的数据就会消失,如果要将数据进⾏持久化的保存,我们可以使⽤⽂件。
二、 ⽂件
1 程序⽂件
2 数据⽂件
3 ⽂件名
三、⼆进制⽂件和⽂本⽂件
四、⽂件的打开和关闭
1.流和标准流
1.1 流
1.2 标准流
2 ⽂件指针
FILE* Fp;//⽂件指针变量,这是创建的一个文件指针
![80f1c6de06f345cdace708cd0b50ec07.png](https://img-blog.csdnimg.cn/direct/80f1c6de06f345cdace708cd0b50ec07.png)
3 ⽂件的打开和关闭
// 打开⽂件FILE * fopen ( const char * filename, const char * mode );// 关闭⽂件int fclose ( FILE * stream );
w:以只写的方式打开文本文件,文件若存在则清空文件内容从文件头部开始写,若不存在则根据文件名创建新文件并只写打开;
a:以只写的方式打开文本文件,文件若存在则从文件尾部追加,文件原来存在的内容不会清除(除了文件尾标志EOF),若不存在则根据文件名创建新文件并只写打开;
r+:以可读写的方式打开文本文件,文件必须存在;
w+:以可读写的方式打开文本文件,其他与w一样;
a+:以可读写的方式打开文本文件,其他与a一样;
若打开二进制文件,可在后面加个b注明,其他一样,如rb,r+b(或rb+)
/* fopen fclose example */
#include <stdio.h>
int main ()
{
FILE * pFile;
//打开⽂件
pFile = fopen ("myfile.txt","w");
//⽂件操作
if (pFile!=NULL)
{
fputs ("fopen example",pFile);
//关闭⽂件
fclose (pFile);
}
return 0;
}
五、⽂件的顺序读写函数
在C语言中,可以使用以下函数进行顺序读写操作:
1. `fopen`:用于打开文件,返回文件指针
FILE *fopen(const char *filename, const char *mode);
2. `fclose`:用于关闭文件
int fclose(FILE *stream);
3. `fgetc`:用于从文件中读取一个字符
int fgetc(FILE *stream);
4. `fputc`:用于向文件中写入一个字
int fputc(int c, FILE *stream);
5. `fgets`:用于从文件中读取一行字符串
char *fgets(char *s, int size, FILE *stream);
6. `fputs`:用于向文件中写入一个字符串
int fputs(const char *s, FILE *stream);
7. `fprintf`:用于向文件中格式化输出数据
int fprintf(FILE *stream, const char *format, ...);
8. `fscanf`:用于从文件中格式化读取数据
int fscanf(FILE *stream, const char *format, ...);
这些函数可以帮助你进行顺序读写操作,从文件中读取数据或向文件中写入数据。
六、 ⽂件的随机读写
1 fseek
int fseek ( FILE * stream, long int offset, int origin );
![4af1222851484f27a2db4af4b5f03e8c.png](https://img-blog.csdnimg.cn/direct/4af1222851484f27a2db4af4b5f03e8c.png)
![54c62b70b2ab4b1eb03ba078f06dbb48.png](https://img-blog.csdnimg.cn/direct/54c62b70b2ab4b1eb03ba078f06dbb48.png)
2 ftell
long int ftell ( FILE * stream );
![8d7208ba14784ef19e7521d5dc22b750.png](https://img-blog.csdnimg.cn/direct/8d7208ba14784ef19e7521d5dc22b750.png)
![40d0ac7291474f8280b1af967f33a914.png](https://img-blog.csdnimg.cn/direct/40d0ac7291474f8280b1af967f33a914.png)
![de18be87e70546df8125be6c0e7f3103.png](https://img-blog.csdnimg.cn/direct/de18be87e70546df8125be6c0e7f3103.png)
![3da456f364b1473d926065213ebdf2fd.png](https://img-blog.csdnimg.cn/direct/3da456f364b1473d926065213ebdf2fd.png)
3 rewind
void rewind ( FILE * stream );
![dbe6849b45764a5780650355b807fdd5.png](https://img-blog.csdnimg.cn/direct/dbe6849b45764a5780650355b807fdd5.png)
七、⽂件读取结束的判定
1 被错误使⽤的 feof
feof 的作⽤是:当⽂件读取结束的时候,判断是读取结束的原因是否是:遇到⽂件尾结束。
读取文件会标记 读到末尾 或 读取错误 根据这个可以知道文件读取结束是什么原因导致的
读到末尾: feof 是的话返回非0,否则0
读取错误 : ferror 是的话返回非0,否则0
补充:
• feof 判断是否为 EOF• ferror 判断返回值是否为 NULL
八、 ⽂件缓冲区
!注意:
为有缓冲区的存在,C语⾔在操作⽂件的时候,需要做刷新缓冲区或者在⽂件操作结束的时候关闭⽂件。
关于文件操作的内容就介绍到这里,觉得还不错的就点个赞和关注吧~~~
谢谢!