1.使用文件的意义
用于处理大型数据,长久性的存储数据、
2.文件的概念
文件:电脑硬盘上的存储数据的文件
分类
按照内容:程序文件、数据文件
按照形式:文本文件、二进制文件
文件名:文件的唯一标识,一般按照路径+文件名主体+后缀组成
// · 表示当前路径
//··表示上一级路径
3.流
流:是一种便于程序员对于各种输入输出设备的不同交互。
流的具体定义:Pointer to a FILE object that identifies an input stream.
标准流:属于流的一种,stdin(标准输入)、stdout(标准输出)、stderr(标准错误)
FILE:是C语言内置结构体,用来在程序运行时候在内存开辟一块空间存放文件结构体变量,对里面各种参数进行记录以便来维护文件。
FILE*:便于维护文件结构体的指针。
4.文件的打开与关闭
文件打开函数:fopen
文件关闭函数:fclose
5.文件的读写
文件可以用程序进行读写操作,为了便于文件读写,C语言为我们提供了一系列库函数:
eg:fgetc与fputc
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { //创建test文件 FILE* pf = fopen("test.txt", "w"); fclose(pf); pf = NULL; //将10086写到test文件中 FILE* pwrite = fopen("test.txt", "w"); fputc('1', pwrite); fputc('0', pwrite); fputc('0', pwrite); fputc('8', pwrite); fputc('6', pwrite); fclose(pwrite); pwrite = NULL; //将test文件内容读到屏幕上 FILE* pread = fopen("test.txt", "r"); fprintf(stdout,"%c", fgetc(pread)); fprintf(stdout,"%c", fgetc(pread)); fprintf(stdout,"%c", fgetc(pread)); fprintf(stdout,"%c", fgetc(pread)); fprintf(stdout,"%c", fgetc(pread)); fclose(pread); pread = NULL; return 0; }
为了便于文件读写,C还提供了可以在文件中移动光标位置的库函数:fseek LINK
因为这个函数涉及到一些偏移量的问题,C也提供了一个专门计算偏移量的库函数:
ftell LINK
6.文件读写结束的判定
feof函数LINK
ferror函数LINK
rewindLINK
7.文件缓冲区
#include <stdio.h> #include <windows.h> //VS2019 WIN11环境测试 int main() { FILE*pf = fopen("test.txt", "w"); fputs("abcdef", pf);//先将代码放在输出缓冲区 printf("睡眠10秒-已经写数据了,打开test.txt⽂件,发现⽂件没有内容\n"); Sleep(10000); printf("刷新缓冲区\n"); fflush(pf);//刷新缓冲区时,才将输出缓冲区的数据写到⽂件(磁盘) //注:fflush 在⾼版本的VS上不能使⽤了 printf("再睡眠10秒-此时,再次打开test.txt⽂件,⽂件有内容了\n"); Sleep(10000); fclose(pf); //注:fclose在关闭⽂件的时候,也会刷新缓冲区 pf = NULL; return 0;
EOF