本博文为半摘记性质
——
声明:部分知识点及例程修改自https://www.runoob.com/cprogramming/c-tutorial.html 菜鸟教程、《全国计算机等级考试-上机考试新版题库 二级C》,另有部分零散资料转自互联网,内容有一定改动,并非全文转载。
本人尊重各位的知识成果,大幅引用的文章原文网址已在各小节末尾给出。
结构体以及文件操作(下)
本文要点:
- 文件
文件
“文件”是指一组相关数据的有序集合。
在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作。例如:
- 通常把显示器称为标准输出文件,printf 就是向这个文件输出数据;
- 通常把键盘称为标准输入文件,scanf 就是从这个文件读取数据。
缓冲区
缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。
从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度。
C语言利用缓冲文件系统管理文件的时候,系统将自动为每一个打开的文件建立缓冲区,此后程序对文件的读写操作实际上时对文件缓冲区的操作。
http://soft.chinabyte.com/database/47/12481547.shtml 原文链接已失效
可用的转载性质文章的链接:https://blog.csdn.net/qq_35375147/article/details/79633569 解析C语言编程对缓冲区的理解
1文件类型指针的定义
在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。
文件类型指针变量的定义方式:
FILE *指针变量//FILE必须大写
一般来说打开多少个文件就有多少个文件型指针变量指向对应的文件。
2操作文件
操作文件的正确流程为:打开文件 --> 读写文件 --> 关闭文件。
2.1打开标准文件
为了打开一个文件,需要知道打开的文件名、文件的使用方式(读or写)以及让哪个指针变量指向被打开的文件。
可以通过调用系统函数fopen()函数来实现文件打开操作,其定义形式为:
FILE *fopen(char *filename, char *mode);
其中filename是要打开的文件名,可以是字符串常数、字符型数组、字符型指针或路径;mode指明打开文件的模式:
2.2标准文件的读或写的操作
文件的使用包括读、写、文件指针的定位等,由打开文件时的mode参数决定。
常用的读写和定位函数:
- fgetc文件字符读入函数(file get char)
用于读入一个字符,使用形式:
char ch=fgetc(pf)//pf是文件指针
//功能是从pf指定的文件中读入一个字符,并作为函数值返回
- fputc文件字符输出函数(file get char)
用于输出一个字符,使用形式:
fputc(ch,fp);//将字符ch写到文件指针fp所指的文件中
//如果输出成功,fputc函数返回所输出的字符;如果输出失败,则返回一个EOF值
——
- feof文件结束判断函数
用于判断文件是否结束,使用形式:
feof(fp);//文件结束值为1,否则为0
——
- fscanf文件输入函数
使用形式:
fscanf(文件指针,格式控制字符串,输入项表);
- fprintf文件输出函数
使用形式:
fprintf(文件指针,格式控制字符串,输入项表);
fscanf函数和fprint函数的读写对象为磁盘文件而非键盘和显示器。
——
- fgets文件字符串读入函数
使用形式:
fgets(str,n.fp);
//函数从fp所指文件中读入n-1个字符放入以str为起始地址的空间内
- fputs文件字符串输出函数
使用形式:
fputs(str,fp);
//函数往文件输出字符串
——
- fread读二进制文件函数
使用形式:
fread(buffer,size,count,fp);
//buffer是数据块的指针,对fread来说,它是内存块的首地址,输入的数据存入此内存块中
buffer是数据块的指针;size表示每个数据块的字节数;count用来指定每读、写一次输入或输出数据库的个数;
- fwrite写二进制文件函数
使用形式:
fwrite(buffer,size,count,fp);
//buffer对于fwrite来说是准备输出的数据库的起始地址
——
文件定位函数:用于移动文件指针
- fseek函数
用来移动文件位置指针到指定的位置上,接着的读或写操作将从此开始。
使用格式:
fseek(pf,offset,origin);
如果执行成功,pf将指向以origin为基准,偏移offset(指针偏移量)个字节的位置,函数返回0;
如果执行失败,则不改变spf指向的位置,函数返回一个非0值。
- rewind函数
使文件位置指针重新返回文件的开头,此函数没有返回值。
使用形式:
rewind(fp);
2.3标准文件的关闭操作
关闭文件采用fclose函数实现,使用形式为:
fclose(fp);
文件指针指向要关闭的文件,当文件正常关闭时,函数返回0,否则返回EOF。