好久不见C、C++板块的更新,因为很多新人的需求,今日更新一篇文件操作的文章! C语言文件操作函数,怕是很多人的痛,因为在各种地方都能用到,说的简单一点在某些课堂作业上,可能会让你去操作一个txt文档的读写,再就是课程设计时候老师要求把数据存放到文本文件中,我曾经见过一个粉丝问我问题,他们的老师要求简直离谱,是必须使用文本文档来存放数据!我直接就🙄🙄🙄,怎么还有这种要求阿?数据库操作也不是不行阿,非得用文本文件,虽说这样比较死板,但也侧面反映出了教学对文件操作的重视,再往深了说,比如你要解析某个文件格式,比如常见的PE文件,关于文件的读写几乎是必不可少的一步,首先得读取到文件内容,才能进行文件的判断和解析吧?所以说了这么多废话,就让我们来看看常用的文件操作函数,这里我只列举常用到的基础操作函数,适合初学者学习! 如果趁着假期想弯道超车,学完文件操作函数,可以试着写一个C语言的某某管理系统来学习一下, 我这里上传了一套程序,是完整版的介绍交易管理系统的实现,纯C语言,感兴趣的小伙伴可以去学习一下,可以直接点击这里,或者在我主页的下载资源里面! 老规矩!一键三连不能少奥兄弟们!!!👀👀👀 文章目录1.fopenfopen是常见的一个文件操作函数,用来打开文件:
我们从函数的声明上可以看的出来函数的第一参数是字符串常量的一个文件名字,第二个参数是文件的打开模式,就是我们要以某种方式来访问这个文件。打开文件成功之后,返回一个函数流指针FILE*的这样一个指针类型,如果打开文件失败,返回NULL,关于第二个参数,我们来看一下常见的一些参数:
代码示例:
2.freadfopen结束之后,正常情况下我们可以得到一个文件流指针,那么我们需要对这个指针指向的数据进行读操作的时候,就会用到fread函数,这个函数的主要功能就是从一个流中读取数据。
我们可以看到四个参数,第一个参数是需要把读出来数据保存到我们的数据缓冲区中去,这个缓冲区我们自己申请内存或者声明字符数组,第二个参数是按照多大来读取,这里设置的是按照1个字节来读取,第三个参数是我们读取的最大数目,比如我们的第二参数是1个字节,第三参数是8次,那就是读8个字节,如果第二参数是2个字节,那就是最大读取16个字节,第四个参数是我们之前获得的文件流指针。返返回值是一个size_t类型的数据,告诉我们读了的次数,可能小于等于第三参数count。看一个使用的举例:
3.fseekfseek是要将文件指针移动到我们指定的位置上去,因为我们在使用文件指针进行读取操作时候,会造成文件指针的移动,这时候比如我们要去再次读取文件开头的内容,那么文件指针已经移动,我们该如何读取呢,使用fseek将指针移动到我们想让它去到的地方。
这个函数声明我们可以看到第一个参数是文件流指针,第二个参数是起始字节数,也就是说我们要第三参数origin的相对字节偏移,第三个参数是定位到的初始位置。对于第三参数,有以下三种可能:
下面来看一个简单的例子:
4.fclosefclose是用来关闭打开的一个文件流指针,我们对文件操作完毕之后,一定要记得关闭当前的文件流指针,否则可能在后续对该文件再进行操作的时候出现一些错误。
这个函数看起来很简单的,它就是传入需要关闭的文件流指针,然后关闭成功之后,会返回0。
5.feoffeof这个函数是用来测试一个流指针是否已经到了文件的末尾,我们有时候需要遍历文件中所有内容时候,就可以用这个函数来进行判断:
这个函数的参数和fclose是一样的,都只需要传入一个文件流指针来进行判断就ok了。如果读取操作试图读取超过文件末尾的内容,则feof函数返回一个非零值;否则返回0。
如果一个文件包含39个字节,而您从文件中读取了39个字节,那么feof将返回0,因为即使文件指针位于文件的末尾,您也没有尝试读取超过末尾的内容。只有当你尝试读取第40个字节时,才会返回一个非零值。 6.fscanffscanf和scanf的用法其实是比较相似的,它可以从文件流中把数据读取到我们的buffer缓冲区中来,使用一定的格式限制。
比如下面的这个测试就是用一个正则的限制,每遇到一个逗号,就把文件中的内容读到对应的buffer中去
fscanf函数从流的当前位置读取数据到参数指定的位置(如果有的话)。每个参数必须是一个指向与格式中类型说明符相对应的类型变量的指针。 7.fprintf那既然有fscanf,那肯定就得有fprintf啊,不然的话,那不是搞得有点偏心了吗,所以微软也设计了fprintf函数。
这个也是和printf差不多,就是把一个buffer缓冲区的数据,以一个规定的格式输入到文件流中去,比如下面这个例子就是把字符串输入到文件流所指之处去!
8.fgetsfgets是每次从所给流指针中读取一行数据读到缓冲区中去,声明如下:
总共三个参数,第一个是一个buffer,到时候需要把数据就读取到这里,第二个是最大的读取字节数,第三个是流指针。具体的使用举例如下:
有关文件操作系列的函数呢,常见的我今天想起来的也就是这些了,如果日后再想起来了,再继续在这里更行这篇文章,好久没更新C/C++专栏了,最近确实是比较忙,有想写个完整项目的兄弟,可以去支持一下:https://download.csdn.net/download/qq_42253797/20416914?spm=1001.2014.3001.5503 今日吟诗:“千淘万漉虽辛苦,吹尽狂沙始到金。” 参考:MSDN |
|