速橙科技有限公司网站建设,设计平台兼职,快速网站仿制,短视频seo排名C语言中的文件操作写在前面文件操作什么是文件文件的分类文件名文件的操作文件指针文件的打开和关闭文件的顺序读写文件的随机读写fseekftellrewindfeof写在前面
文件操作在C语言部分只是属于了解内容#xff0c;但是因为它可能会应用在项目中#xff0c;所以我把它单独写成…
C语言中的文件操作写在前面文件操作什么是文件文件的分类文件名文件的操作文件指针文件的打开和关闭文件的顺序读写文件的随机读写fseekftellrewindfeof写在前面
文件操作在C语言部分只是属于了解内容但是因为它可能会应用在项目中所以我把它单独写成一个小节。
文件操作
什么是文件
文件的分类
文件一般分为程序文件和数据文件。
程序文件是包括源程序文件后缀名.c目标文件windows环境下后缀名为.obj可执行程序windows环境下后缀名为.exe数据文件是程序运行过程中需要从中读取数据的文件或者程序运行中输出内容的文件
本小节文件操作指的就是数据文件的操作。
根据数据在文件中的组织形式数据文件又分为文本文件或者二进制文件。
数据在内存中以二进制的形式存储如果不加转换的输出就是二进制文件。如果要求在外存上以ASCII码的形式存储就需要在存储前进行转换。以ASCII字符的形式存储的文件就是文本文件。
一个数据在内存中是怎么存储的呢? 字符一律以ASCII形式存储数值型数据既可以用ASCII形式存储也可以使用二进制形式存储。
如有整数10000如果以ASCII码的形式输出到磁盘则磁盘中占用5个字节(每个字符一个字节)而 二进制形式输出则在磁盘上只占4个字节(VS2013测试)。
文件名
文件名是唯一的文件标识包含三部分文件路径文件名主干文件名后缀。
文件的操作
文件指针
缓冲文件系统中关键的概念是“文件类型指针”简称“文件指针”。
每个被使用的文件都在内存中开辟了一个相应的文件信息区用来存放文件的相关信息(如文件的名 字文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的取名FILE。
不同的C编译器的FILE类型包含的内容不完全相同但是大同小异。 每当打开一个文件的时候系统会根据文件的情况自动创建一个FILE结构的变量并填充其中的信息
使用者不必关心细节。 一般都是通过一个FILE的指针来维护这个FILE结构的变量使用起来更方便。
//创建FILE*指针变量
FILE* pf;通过文件指针就可以找到与他相关联的文件。
文件的打开和关闭
文件在读写之前应该先打开从而打开文件流建立一个FILE类型的结构体读写后应该关闭它。
因为有缓冲区的存在C语言在操作文件的时候需要做刷新缓冲区或者在文件操作结束的时候关闭文件。如果不关闭就不会刷新C语言内部的缓冲区从而导致读写出现问题。
//打开
FILE* fopen(const char* filename, const char* mode);
//关闭
int fclose(FILE* stream);文件打开mode意义如果指定文件不存在“r” (只读)为了输入数据打开一个已经存在的文本文件输入指的是 文件 - 内存出错“w” (只写)为了输出数据打开一个文本文件输出指的是 文件 - 内存建立新文件“a” (追加)文件尾部添加数据建立新文件“rb” (只读)二进制的r出错“wb” (只写)二进制的w建立新文件“ab” (追加)二进制的a出错“r” (读写)为了读和写打开一个文本文件出错“w” (读写)为了读和写建立一个新文件新建“a” (读写)打开一个文件在文件尾部进行读写新建“rb”(读写)为了读和写打开一个二进制文件出错“wb”(读写)为了读和写新建一个新的二进制文件建立“ab”(读写)打开一个二进制文件在文件尾部进行读写建立新文件
文件的顺序读写
功能函数名使用条件字符输入函数fgetc所有输入流字符输出函数fputc所有输出流文本行输入函数fgets所有输入流文本行输出函数fputs所有输出流格式化输入函数fscanf所有输入流格式化输出函数fprintf所有输出流二进制输入函数fread文件二进制输出函数fwrite文件
文件的随机读写
fseek
根据文件指针的位置和偏移量来定位文件指针。
可以修改文件指针的位置到任意位置根据origin来选定文件起始或者是当前位置根据偏移量修正位置到任意位置处。
int fseek ( FILE * stream, long int offset, int origin );ConstantReference positionSEEK_SETBeginning of fileSEEK_CURCurrent position of the file pointerSEEK_ENDEnd of file *
ftell
前面fseek 是将文件指针移动至任意位置ftell可以返回文件指针相对于起始位置的偏移量。
long int ftell ( FILE * stream );rewind
让文件指针的位置回到文件的起始位置。
void rewind ( FILE * stream );feof
注意在文件读取过程中不能用feof 函数的返回值来判断文件是否结束。feof 使用场景是当文件读取结束的时候feof 判断是读取失败结束的还是遇到文件尾部结束的。
所以正确的读取判断文件结束的方法
文本文件读取是否结束判断返回值是否为 EOF (对fgetc)或者 NULL (对fgets)二进制文件的读取结束判断返回值是否小于实际要读取的个数。(fread)
文件操作小节完。主要掌握的还是如何使用文件操作函数。