【从零开始的 C 语言笔记】第二十九篇-读档 & 写档(1)

上一篇我们介绍了Struct这个语法,也大致介绍它的宣告、使用方式,不晓得大家有没有清楚一些呢!

今天我们来介绍跟实际档案操作有关的--「读档 & 写档」的开档部分!


档案操作流程

一般来说我们在操作档案时,会有最基本的两个动作,就是使用前(要对档案做任何事情之前)先做开档的动作「fopen」,以及使用完毕(程式结束前)时也要记得关档「fclose」,其他看是要读档抑或是写档则是看需要再进行。

#include <stdio.h>int main(){    //开始使用前,设定file文件指针并以w模式开档    FILE *fptr;    fptr = fopen("TheTXT.txt","w");        //写入档案    fprintf(fptr,"this a test txt.");    //程式结束前闭档    fclose(fptr);    return 0;}

回传0,表示程式运行成功。
http://img2.58codes.com/2024/201425657hC5fresQ4.png
可以看到在这个文件里有我们写入的字串了。
http://img2.58codes.com/2024/201425653plnlNjLoi.png


fprintf & printf

其实fprintf跟先前学过的printf(第八篇)很像,其实就是用来写档案版本的「printf」,也可以加入格式指定字 & 特殊字元(第七篇),运用上的差别只在于fprintf的第一位参数,必须是对象为文件、档案的指针,而使用方式与printf并没有其他不同。

可以看到fprintf的文件声明:

int fprintf(FILE *stream, const char *format, ...)

和printf的文件声明:

int printf(const char *format, ...)

其实是没什么太大差异的,所以只要熟悉printf的使用方法,fprintf就不是问题啦!不晓得大家有没有记起来这个小规则了呢,也要记得在使用前开档,而使用完毕要闭档喔!


开档模式介绍

其中比较特别的是我们在使用fopen进行开档时,需小心的设定好模式,也要注意不同模式下档案使用的方法不同,而如果来先将不同开档模式整理在下表的话,会像这样:

模式说明若文件存在若文件不存在r开启档案读取开档、指针指向内容开头错误w创建档案写入清除已存在内容、重新指向内容开头创建新档a开启或创建档案写至尾端不影响内容,指向内容之尾(续写)创建新档r+开起档案读写开档、指针指向内容开头错误w+创建档案读写清除已存在内容、重新指向内容开头创建新档a+开启、创建档案读写不影响内容,指向内容之尾(续写)创建新档

还有跟以上模式差不多,但为了**二进位档案(.dat档)**的模式:

模式说明若文件存在若文件不存在rb开启二进位档案读取开档、指针指向内容开头错误wb创建二进位档案写入清除已存在内容、重新指向内容开头创建新档ab开启或创建二进位档案写至尾端不影响内容,指向内容之尾(续写)创建新档rb+开起二进位档案读写开档、指针指向内容开头错误wb+创建二进位档案读写清除已存在内容、重新指向内容开头创建新档ab+开启、创建二进位档案读写不影响内容,指向内容之尾(续写)创建新档

从表中我们可以看到各个模式的操作,也应该可以看出指令的规律了,r相关的指令针对于已存在之档案,w相关指令则相当于清空重写。a相关的指令类似于续写档案的概念。

另外提醒大家写档读档真的要小心,尤其是w相关的模式,一不小心把有要读取内容的档案弄成这模式会整组不见的!真的要注意使用开档的模式!


那我们今天大概介绍完档案读写的「开档」(fopen)部分,希望大家真的在使用档案时要小心,不要一不小心把文件清光光了,那真的是很哭!

下一篇我们继续档案读写的「读」吧!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章