C语言文件操作的基础应用(超详细)(二)

简介: C语言文件操作的基础应用(超详细)

fprintf和fscanf


二者用于格式化的输入和输出,语法跟其兄弟printf与scanf相似根据需要的数据类型及数量进行选择。用于多种格式的输入输出。

image.png

如此便可以输出一个结构体中数据类型不同的多个参数。而且该函数会返回成功输出的项目数。

image.png

image.png

scanf 相似记得第一个参数是文件指针,其他用法与scanf相同。如此操作后我们便实现将文件中的数据输入到我们定义的一个结构体之中。

image.png

fwrite


fwrite 可以将我们想要的内容用二进制的形式输出在文件之中。 ptr 为指向要输出值的指针, size 为输出值的大小单位为字节, count 为输出的数量。成功则返回成功写入的元素总数。

image.png

还记得前面提到的 wb 是用于写入二进制的数据,所以这里也需要使用 wb 作为文件的打开方式。

image.png

这样子我们便成功将数据以二进制的形式写入文本,但是直接观察文本我们并没有看到有什么太大的变化,但是我们需要知道的是,记事本并不能识别二进制文件,于是他只能反应出他大致能识别出的文件。若我们用二进制的形式再将数据从文件中输入到内存中,我们会发现结果仍然是一样的。

fread


这就是我们从文件中读取二进制时所要用到的函数,内含的参数与 fwrite 类似。

image.png

以同样的方式再打一串代码,我们可以观察到输出的结果与我们上一步所输入的数据是一样的。

image.png

我们可以肯定的是,确实是有数据写入文件中,只不过通过记事本我们只能看到部分或是乱码。但是再次以二进制读取后输出的结果并无二致。

文件的随机读写


讲完了顺序读写,现在来讲随机读写。虽然它的名字叫随机读写,但是它并非真的在随机的位置进行读写,而是有一定规则的。

fseek


其需要的参数有三个,第一个是文件指针,第二个是从原点的偏移数,最后一个是原点的设定,关于原点的设定我们有三个选项,SEEK_SET代表的是设置为文件的开头,SEEK_END代表的是设置为文件的结尾,SEEK_CUR代表的是设置为当前文件指针的位置。同时偏移数可以是正数也可以是负数,若从文件开头开始则正向偏移,若从结尾开始则需要用负数进行反向偏移。如果成功,函数将返回零。否则,它将返回非零值。即变更当前文件指针的位置。

73ff70aafc3e4b04a85e332f576c90df.png

rewind


image.png

该函数只需要传入目标文件指针就能使文件指针回到初始位置。

ftell


image.png

ftell 会用返回值告诉你文件指针相当于起始位置的偏移量。若失败,将返回-1L。

文件的打开方式


w


w 代表的是只写不读,若找不到该文件则会创建一个新文件,同时在每次打开文件时都会将原文件的内容清空等待重新写入。因此普通写入不会造成问题,若是打开方式为 w 但实际进行的是读取的操作,最后不仅什么都没读到,更是原文件给清空了,更加得不偿失。

image.png

r


代表的是只读不写,若是找不到该文件则会返回空指针,这个规律对于每个带 r 的打开方式都适用。

image.png

image.png

然而文本的数据并没有发生变化。因此使用r打开文件并不会将文件里面的数据清除,但也做不到对数据进行追加。

a


a打开方式是向文本文件尾添加数据,若查找不到文件则会建立一个新的文件,作用与w类似但不会清除原文件内的数据。

image.png

wb,rb,ab


都表示打开一个二进制的文件,但查找不到指定文件的反应有所不同。

“rb”(只读) 为了输入数据,打开一个二进制文件 出错
“wb”(只写) 为了输出数据,打开一个二进制文件 建立一个新的文件
“ab”(追加) 向一个二进制文件尾添加数据 出错

w+ r+ a+


可读可写,可以在一个流程之中同时做到写入并读取,简便了读取的方式,但是未找到该文件时也有不同的情况。

image.png

“r+”(读写) 为了读和写,打开一个文本文件 出错
“w+”(读写) 为了读和写,建议一个新的文件 建立一个新的文件
“a+”(读写) 打开一个文件,在文件尾进行读写 建立一个新的文件

总结


fopen跟fclose在文件操作中起到地基的作用,在此基础上才能使用文件操作函数才可以对数据进行输入输出处理,关于打开方式的选择也大有讲究,什么时候选择什么方式显得格外重要。因此理清其不同的部分是能够完善使用的关键。同时需要结合顺序读写跟随机读写使文件操作更加灵活。

如果喜欢本篇文章就留下个赞吧,也欢迎大家在评论区留言讨论,谢谢大家。

目录
相关文章
|
2月前
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
81 4
|
14天前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
34 9
|
16天前
|
存储 数据管理 C语言
C 语言中的文件操作:数据持久化的关键桥梁
C语言中的文件操作是实现数据持久化的重要手段,通过 fopen、fclose、fread、fwrite 等函数,可以实现对文件的创建、读写和关闭,构建程序与外部数据存储之间的桥梁。
|
18天前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
40 5
|
18天前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
18天前
|
算法 C语言
C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项
本文深入讲解了C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项,通过实例演示了文件操作的基本流程,帮助读者掌握这一重要技能,提升程序开发能力。
54 3
|
16天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
35 1
|
17天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
43 1
|
18天前
|
网络协议 物联网 数据处理
C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势
本文探讨了C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势。文章详细讲解了使用C语言实现网络通信程序的基本步骤,包括TCP和UDP通信程序的实现,并讨论了关键技术、优化方法及未来发展趋势,旨在帮助读者掌握C语言在网络通信中的应用技巧。
30 2
|
22天前
|
存储 C语言 计算机视觉
在C语言中指针数组和数组指针在动态内存分配中的应用
在C语言中,指针数组和数组指针均可用于动态内存分配。指针数组是数组的每个元素都是指针,可用于指向多个动态分配的内存块;数组指针则指向一个数组,可动态分配和管理大型数据结构。两者结合使用,灵活高效地管理内存。