【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月前
|
存储 Kubernetes 调度
在K8S中,怎样实现数据持久化?
在K8S中,怎样实现数据持久化?
|
5月前
|
Java
揭秘Java文件操作背后的惊天秘密:读写、复制、删除一网打尽!
【6月更文挑战第27天】Java文件操作涵盖读、写、复制和删除。例如,读文件使用`BufferedReader`和`FileReader`;写文件利用`BufferedWriter`和`FileWriter`;复制文件通过读写流实现;删除文件则依赖`Files.delete()`。以上代码示例展示了具体实现。
38 5
|
3月前
|
存储 JSON 程序员
Python文件操作与数据持久化:强大功能简化存储管理,助力程序员高效实现业务逻辑
【8月更文挑战第6天】数据是现代计算机程序的核心,但其存储与管理常常构成开发挑战。Python凭借其强大的文件操作与数据持久化机制,显著提升了编程效率。Python的文件处理简单直观,通过内置`open`函数即可轻松实现文本或二进制文件的读写。例如,仅需几行代码就能完成文本写入。此外,Python支持多种数据持久化方案,如文本文件、CSV、JSON及数据库操作。利用内置`json`模块,可以便捷地进行JSON数据的序列化与反序列化,实现数据的有效存储与检索。这些特性使得Python成为数据管理和存储的理想选择,让开发者能够更加专注于业务逻辑的实现。
43 0
|
5月前
|
Java API
惊呆了!Java文件操作竟能如此简单:一分钟学会读写、复制、删除!
【6月更文挑战第27天】Java编程中的文件操作简单易行。使用`java.io`包中的`FileInputStream`和`FileOutputStream`进行读写,例如写文件将字符串转为字节写入,读文件则循环读取字节。文件复制涉及两个流,从源文件读取后写入目标文件。删除文件只需调用`File`对象的`delete`方法。这些基本操作让Java文件处理变得直观且易于掌握。
33 1
|
5月前
|
Java API 数据处理
Java文件操作,让你成为文件管理的王者!读写、复制、删除不在话下!
【6月更文挑战第27天】在Java编程中,掌握文件操作至关重要。使用java.io包的File和流类,可以轻松实现文件读写、复制和删除。
50 0
|
6月前
|
存储 JSON 数据格式
Python文件操作与数据持久化:解放数据,提升效率
在当今信息时代,数据处理和存储已经成为各行各业的核心需求。本文将介绍Python文件操作以及数据持久化的相关技术,探讨如何利用Python的强大功能和库来解放数据,提升工作效率。
|
6月前
|
存储 JSON 数据格式
从瞬息万变到永恒存储:Python文件操作与数据持久化
在技术领域的快速发展中,数据持久化成为了一个关键问题。本文将介绍如何利用Python进行文件操作与数据持久化,通过掌握这些技巧,您将能够将临时数据转化为永久性的存储,提高数据的可靠性和可访问性。
|
6月前
|
存储 程序员 数据处理
Python文件操作与数据持久化:解放程序员的存储之道
在当今大数据时代,程序员需要处理大量的数据,并确保数据的安全和持久性。本文将介绍Python中强大的文件操作功能和数据持久化技术,帮助程序员更好地管理和存储数据,提高工作效率和数据处理能力。
52 1
|
Linux
嵌入式Linux QT开发之如何实现获取磁盘空间大小的应用逻辑
嵌入式Linux QT开发之如何实现获取磁盘空间大小的应用逻辑
241 0
|
BI
【文件操作的重难点详解】(一)
【文件操作的重难点详解】(一)
67 0