注意,请当真学习完《C程序设计(第五版)》第十章后再浏览
C语言文件操作文章源自微观生活(93wg.com)微观生活-https://93wg.com/12141.html
文件文章源自微观生活(93wg.com)微观生活-https://93wg.com/12141.html
对于普通的电脑使用者来讲,文件主要用于存储以及读取文字、图片、音视频等。对于C语言的开发者来说,文件就是存储以及读取数据的媒介。文章源自微观生活(93wg.com)微观生活-https://93wg.com/12141.html
C语言中,文件都是按字节写入的,并在需要的时候依照存储的字节大小来相应的读取,用字节流(stream)来形容是最适合无非了。文章源自微观生活(93wg.com)微观生活-https://93wg.com/12141.html
那C语言究竟怎么对文件进行读写操作的呢?下面来一块儿学习一下吧!文章源自微观生活(93wg.com)微观生活-https://93wg.com/12141.html
ASCII文件以及二进制文件文章源自微观生活(93wg.com)微观生活-https://93wg.com/12141.html
ASCII文件里的所有内容都是ASCII字符,比如数字100,分别以&文章源自微观生活(93wg.com)微观生活-https://93wg.com/12141.html
上述情况如果存储在二进制文件中就能够100这个整数的情势存储,通常占用4个字节。咱们来测试一下,下图中两个文件都保留了三个数字1、10、100,上面是ASCII文件占用6个字节,下面是二进制文件占用3*4=12个字节。文章源自微观生活(93wg.com)微观生活-https://93wg.com/12141.html
ASCII文件以及二进制文件对照文章源自微观生活(93wg.com)微观生活-https://93wg.com/12141.html
ASCII完整是依照字符表现情势存储的,而二进制则是依照内存中数据存储的情势存储的;ASCII文件里面的内容对人来讲很友好,直接能读懂,而二进制文件需要知道存储的数据究竟是什么才能解析,由于数据在内存中占用的字节数是不固定的。文章源自微观生活(93wg.com)微观生活-https://93wg.com/12141.html
ASCII可以理解为依照“字符表象”存储,二进制则是照搬“值在内存中的存储方式”存储。
文件与指针
C语言中定义了文件在内存中的存储信息为一个结构体,叫作FILE。咱们通常操作文件的时候会定义一个指向这个文件结构体数据类型的指针变量,如FILE *fp;
打开文件
在Visual Studio 2022里,使用fopen_s()函数替换了原来的fopen()函数来打开文件。
fopen_s()再也不返回文件系统的指针,而是作为第一个参数传入,如:
fopen_s打开文件
关闭文件
关闭一个打开的文件使用fclose()函数。因为C语言缓冲区读写文件的特性,特别是向文件写入数据时,不关闭文件会致使缓冲区(未满时)最后的内容没法保留到文件中去。
文件指针偏移
ASCII文件写入与读取
写入单个字符
使用fputc()函数写入单个字符,用putc()函数也是一样的作用,是等价的。然而比较名字向文件写入的时候用fputc(),向节制台stdout写入时用putc(),这样让代码被浏览的时候更友好一些。
写入字符串
使用fputs()函数直接写入字符串,然而注意以及上面的区分,它以及puts()函数不是等价关系,puts()是向节制台stdout写入。
ASCII文件写入示例
读取
文件读取可使用fgetc()函数依照ASCII字符逐个读取,也能够使用fgets()按行读取。
ASCII文件读取
注意,以上示例中fgets()实际每一次读取长度为49,由于末位要给“\\0”留着。
二进制文件写入与读取
写入
二进制文件写入通常使用fwrite()函数。
fwrite()函数
读取
对应写入的读取函数通常使用fread(),读取的参数要依据写入数据的字节大小来肯定,否则读掏出来的数据就是过错的。
fread()函数
fread()以及feof()
fread()函数读取数据时不要使用feof()来判断是不是读完,由于fread()是“成块”读取数据的,读到最后一块时feof()仍未到末尾,接着fread()继续读取一次feof()才判断到了结尾,这样会致使末尾重复读取一次。
总结
如果咱们掌握了文件的读写操作,按道理来说在不斟酌效力的条件下可以做一个简单的文件数据库了,有兴致的可以试试实现最基础的增删改查功能。
依照《C程序设计》第五版的书本知识章节来讲,本节课过后就完结了,从9月19开始恰好一个月的时间,在坚持完成这系列课程的同时,我自己也感觉到了进步,毕竟现代高档语言学多了,会更有想去了解底层的冲动,恰好C语言能辅助拓展自己的一些知识面。
《C程序设计》第五版
虽然书本章节学习完了,基础知识都过了一遍,但想真实的掌握C语言只有一条道——实践,接下来筹备从GUI项目开发为切入点来巩固加深C语言,到时候也会更新在个人媒体上。
虽然目前浏览量以及粉丝都很少,半途确切有打退堂鼓的想法,然而终究还是坚持了下来,也算是给自己一个交待吧。
Anyway,不管是何机缘你读到了本系列课程,都但愿对你有那么一点帮助。本系列课程是针对初学者尤其是在校大学生的,但愿大家能学好C语言!
C程序系列
一块儿学《C程序设计》第十一课——链表及其操作
一块儿学《C程序设计》第十课——结构体、共用体和枚举类型
一块儿学《C程序设计》第九课——预处理以及动态分配内存
一块儿学《C程序设计》第八课——指针
一块儿学《C程序设计》第七课——函数及实战练习
以上就是微观生活(93wg.com)关于“一块儿学《C程序设计》第十二课——文件的读写操作”的详细内容,希望对大家有所帮助!
评论