【C-文件操作】一文教你如何将代码的数据持久化(一)

简介: 【C-文件操作】一文教你如何将代码的数据持久化

1.为什么使用文件?

按信息存储时间来分信息:

  1. 临时性信息:内存中,随断电丢失
  2. 永久性信息:硬盘或光盘等中的,放在文件中.

文件:载体,能将临时性信息通过文件变为永久性信息

使用文件可以使得数据持久化:当我们在运行程序结束后,程序再次运行时,上一个程序的数据就会丢失,为了将上一次程序的数据保存下来,就产生了位于硬盘上的文件。

2.什么是文件?

2-1文件的分类

f2a0863eed574da086810eb7bc7ffc62.png

  • 程序文件:test.c,test.obj,test.exe等,可操作性数据文件
  • 数据文件:二进制文件和文本文件等,存放一般的数据

1de057a42cd54fafa9553704d835b911.png

2-2文件名

文件名3部分:文件路径+文件名主干+后缀

例如:D:\QQ\QQ文件下载\MYSQL安装和配置.pdf

0c23dfdeef26470a81a51a5a5f39d316.png

2-3文件指针

每一个正在使用的文件,都在内存中 开辟了相应的文件信息区,来存放文件的相关信息(比如文件名,文件状态,文件当前的位置等等),这些信息是被保存在一个结构体变量FILE中的。9ad99f0d9286492d8d4ab33644ceb1a8.png


备注:以下文件操作函数的头文件都是stdio.h

3.文件的打开和关闭

3-1文件的打开

函数原型:FILE* fopen(const char* filename ,const  char* mode)


参数1:file-->文件名:例如D:\桌面\test.txt,用字符串表示


备注:这里涉及绝对路径和相对路径以及转义字符的知识,\\才是\


参数2:mode--->启动的访问类型,用字符串表示


返回值:FILE* --->打开成功,则返回所打开文件的文件指针;打开失败,则返回NULL


打开方式(mode)的类型:

a57efd674b22404780fe0a510a2686c3.png


b23793e244fc4a4495bbc8cc32d83268.png


由于文件类型不同:"r"用于处理文本文件(.c,.txt),"rb"用于处理二进制文件(.exe.,.zip),同理"wb","ab"...


r-read 读

w-write 写

a-append 追加

t-test 文本文件,一般省略不写

b-binary 二进制文件文件

+  读和写


3-2 文件的关闭

int  fclose(FILE*  stream)

  • FILE* stream 打开文件的地址
  • 函数返回值:int类型,如果为0,则关闭成功
int main()
{
  //文件的打开
  FILE* pf = fopen("D:\\桌面\\test.txt","r");
  if (pf == NULL)
  {
    perror("fopen");
    return 1;
  }
  //文件的关闭
  fclose(pf);
  pf = NULL;
  return 0;
}

4.文件的顺序读写

45fe501df8fe4e31a6882d59d3d370ff.png

关于这里的所有输入/出流的理解:

b7e6bb43c046467a8a90298c723a6f72.png

备注:每一个流的类型都是FILE*类型

4-1字符输出函数,文件的写入-----fputc

int fputc(int c,FILE* stream)

参数1:c---->要写入的字符

参数2:stream----->指向FILE结构的指针


  //写文件,mode改为w
  fputc('a', pf);
  fputc('b', pf);
  fputc('c', pf);
  fputc('d', pf);
  for (char ch = 'a'; ch <= 'z'; ch++)
  {
    fputc(ch,pf);
  }

5ca4a007d380471891acbd3e8fddc517.png

cb7f9d740d424e70b8c4193244530abf.png

4-2字符输入函数:文件的读出----fgetc

int fgetc(FILE* stream)

返回值:打开成功返回读出的那个字符;   打开失败返回EOF,

  //读文件,mode改为r
  char ch1 = fgetc(pf);
  char ch2 = fgetc(pf);
  char ch3 = fgetc(pf);
  char ch4 = fgetc(pf);
  printf("%c%c%c%c", ch1, ch2, ch3, ch4);
  char ch = 0;
  while ((ch = fgetc(pf)) != EOF)
  {
    printf("%c", ch);
  }

ceffd887f09e490bbf7d35fead872dfd.png


目录
相关文章
|
3月前
|
存储 Linux API
Linux应用开发基础知识——文件IO操作(三)
Linux应用开发基础知识——文件IO操作(三)
56 2
Linux应用开发基础知识——文件IO操作(三)
|
2月前
|
JSON Go 数据格式
第十四章 文件操作
第十四章 文件操作
29 2
|
4月前
|
存储 JSON 数据格式
从瞬息万变到永恒存储:Python文件操作与数据持久化
在技术领域的快速发展中,数据持久化成为了一个关键问题。本文将介绍如何利用Python进行文件操作与数据持久化,通过掌握这些技巧,您将能够将临时数据转化为永久性的存储,提高数据的可靠性和可访问性。
|
4月前
|
存储 程序员 数据处理
Python文件操作与数据持久化:解放程序员的存储之道
在当今大数据时代,程序员需要处理大量的数据,并确保数据的安全和持久性。本文将介绍Python中强大的文件操作功能和数据持久化技术,帮助程序员更好地管理和存储数据,提高工作效率和数据处理能力。
18 1
|
4月前
|
存储 JSON 数据格式
Python文件操作与数据持久化:解放数据,提升效率
在当今信息时代,数据处理和存储已经成为各行各业的核心需求。本文将介绍Python文件操作以及数据持久化的相关技术,探讨如何利用Python的强大功能和库来解放数据,提升工作效率。
|
4月前
|
存储 算法 Go
ZIP文件实战指南:读写操作一网打尽
ZIP文件实战指南:读写操作一网打尽
41 0
|
9月前
|
存储
【文件操作的重难点详解】(二)
【文件操作的重难点详解】(二)
40 0
|
9月前
|
BI
【文件操作的重难点详解】(一)
【文件操作的重难点详解】(一)
37 0
|
11月前
|
Python
谈一谈|如何随意的对文件进行读写?
谈一谈|如何随意的对文件进行读写?
65 0
|
存储 缓存 编译器
细谈文件操作
在写代码的时候,数据都是放在内存中的,而程序一关闭,数据就没有了,这就让人很难受,我们想把数据存下来,这就涉及到要将数据持久化,而一般让数据持久化的方法有,把数据存放在磁盘文件,存放到数据库等方式。
43 0