###当数据存放在内存中时,当内存断电后重启,就会发现数据消失,因此我们需要对数据持久化,比如将其存放在磁盘或数据库上,使自己能够随时使用。
在程序设计中,有两种文件:程序文件和数据文件 > 数据文件用来存储信息,程序文件(源程序文件.c 可执行程序.exe)用来执行操作。
文件一般有一个标识名:由 文件路径 + 文件主干 + 文件后缀
c:/code/test.txt //一个文件只能有一个特殊标识名,以与其他文件区分;文件类型指针
在操作文件时,每个被使用的文件都会在文件中开辟一个相应的信息区,放置文件相关信息于特定的结构体(struct FILE)中,由一个文件指针(FILE*)指向该结构体,C语言中可以通过操作文件指针来改变文件信息区的内容,操作文件。
FILE* pf; //文件指针变量;文件打开与关闭
使用文件时,先 打开(fopen) ,使用完成后要 关闭(fclose)
//open a file FILE* fopen(const char* filname, const char* mode); //close a file int close( FILE* stream);文件打开方式 读文件:
FILE* pf = fopen("text.txt","r");
FILE* pf = fopen("c://user//text.txt","r");
fclose(pf);
fclose(pf);
写文件
FILE* pf = fopen("text.txt","w");
FILE* pf = fopen("c://user//text.txt","w");
fclose(pf);
fclose(pf);
文件的文本方式读写
文件的字符方式读写
文件的打开方式决定了对文件的操作方法,主要分为文件的顺序读写与文件的随机读写;
以内存为对象,如果数据由内存移动至文件中,称为 输出/写文件 ;数据由文件移动至内存中,称为 输入/读文件
流:数据在内存、文件、外部设备的移动方法,用户录入数据到流中,之后由流来决定数据的写入方式:
C语言运行过程中,会打开三个流:
- 标准输入流(stdout)
- 标准输出流(stdin)
- 标准错误流(stderr)
int fputc(int c, FILE* stream);
//例如:
FILE* pf = fopen("text.txt", "w");
fputc('l', pf);
fputc('i', pf);
fputc('u', pf);
fclose(pf);
pf = NULL;
fgetc()
int fgetc( FILE *stream );
FILE* pf = fopen("text.txt", "r");
printf("%cn",fgetc(pf));
fclose(pf);
pf = NULL;
fputs()
int fputs( const char *string, FILE *stream );
FILE* pf = fopen("text.txt", "w");
fputs("zhifeiliu", pf);
fclose(pf);
pf = NULL;
fgets()
char *fgets( char *string, int n, FILE *stream );
FILE* pf = fopen("text.txt", "r");
char arr[20] = {0};
fgets(arr, 5, pf);
fclose(pf);
pf = NULL;
文件的格式化方式读写
fprintf()
int fprintf( FILE *stream, const char *format [, argument ]...);
int printf( const char *format [, argument]... );
FILE* pf = fopen("data.txt", "w");
fprintf(pf,"%d %lf", 10, 20.3);
fclose(pf);
pf = NULL;
fscanf()
int fscanf( FILE *stream, const char *format [, argument ]... );
int scanf( const char *format [,argument]... );
FILE* pf = fopen("data.txt", "r");
fprintf(pf,"%d %lf", &a, &b);
fclose(pf);
pf = NULL;
文件的二进制方式读写
fwrite()
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
FILE* pf = fopen("data.txt", "wb");
int arr[] = {1,23,4,5,4352,6};
fwrite(arr, sizeof(arr), 1, pf);
fclose(pf);
pf = NULL;
fread()
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
FILE* pf = fopen("data.txt", "rb");
int arr[5] = {0};
fread(arr, sizeof(arr), 1, pf);
fclose(pf);
pf = NULL;
文件的随机读写
fseek()
int fseek( FILE *stream, long offset, int origin );ftell()
long ftell( FILE *stream );rewind()
void rewind( FILE *stream );文件结束判断 feof()
int feof( FILE *stream );ferror()
int ferror( FILE *stream );



