C语言文件操作总结
C语言中文件也是非常重要的一部分,首先文件是由文件内容和文件属性构成,目前阶段可以先认为文件都是在硬盘上存储的,当然这种说法不准确,但就目前所学知识是有限的,可以简单的先这样认为。
文件有两种:程序文件(以.c结尾) 数据文件(以.h结尾)
数据文件的类型:文本文件 , 二进制文件
二进制文件:顾名思义二进制文件就是数据在内存中以二进制形式存储,输出也是二进制。
文本文件:在外存上以ASC||码的形式存储,存储前需转换。(以ASC||码存储的文件)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<windows.h>
int main()
{
int a = 10000;
FILE *fp = fopen("test.txt", "wb");//定义fp这个文件指针,同时会创建一个FILE结构体用来保存文件的属性等信息
fwrite(&a, 4, 1, fp);//将fp所指文件的内容写入a中
fclose(fp);//关闭文件并释放FILE结构体
fp = NULL;//文件关闭后让fp指针指空
return 0;
}
上面是一段对文件操作的代码,fp是FILE * 类型的叫做文件指针也叫文件句柄,wb是用二进制方式写入,还应注意这里打开文件和关闭文件分别用了函数fopen和fclose,fopen的返回值是一个文件句柄。(通过文件指针变量能够找到与它关联的文件)。
当程序运行时会默认打开三个文件,分别是,键盘(stdin->标准输入),显示器(stdout->标准输出),显示器(stderr->标准错误)。
文件缓冲区:主要解决的是CPU和磁盘之间速度不匹配的问题(应用程序效率问题)。
缓冲文件系统先为程序中每一个正在使用的文件开辟一块“文件缓冲区”,从内存向磁盘输出数据先送到内存中的缓冲区,装满 缓冲区后才一起送到磁盘上;读数据时,先将磁盘中的文件读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲去逐个将数据送到程序数据区(程序变量等),缓冲区大小根据c编译系统决定的。
文件的打开方式:“r” 只读 “w” 只写(原来的文件会被清空,会建立一个新的文件)
“a” 追加 “rb” 只读 (二进制)
“wb” 只写 (二进制) “ab” 追加 (二进制)
“r+” 读写 (文本) “w+” 读写 ,清空原来的建立一个新文件
“a+” 读写 在文件末尾进行读写 “rb+” 读写 (二进制)
“wb+” 读写 (二进制) “ab+” 读写 (二进制)在文件末尾读写
文件的随机读写:fseek:SEEK_SET(文件开始)
SEEK_CUR(文件指针当前位置)
SEEK_END(文件末尾)
函数原型 int fseek(FILE *stream,long int offset,int origin)
ftell:返回文件指针相对于起始位置的偏移量。
rewind:相当于fseek从起始位置开始,偏移量为0。
文件结束判定
牢记:在文件读取过程中,不能使用feof函数的返回值直接用来判断文件是否结束。而是应用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束。
上一篇: SpringBoot2.x 整合多环境配置 — QS2
下一篇: C语言数组注意事项