首页 > 其他分享 >C语言文件操作—看完还不会欢迎留言!不收藏就找不到了a!

C语言文件操作—看完还不会欢迎留言!不收藏就找不到了a!

时间:2025-01-18 23:00:37浏览次数:3  
标签:文件 指向 留言 读写 收藏 参数 C语言 比如 指针

本章作为科普篇,大家在工作时可能用的很少,但不看白不看嘛!看完一定加深编程语言与计算机之间的理解! 

我们看本章的几个重点:

1:为什么要使用文件?

2:什么是文件

3:文件的打开与关闭

4:文件的使用方式

5:文件的顺序读写

6:文件的随机读写

(C语言阶段只需要掌握以上即可!)

为什么要使用文件

我们使用计算机需要存储需要的数据,比如过了10天半个月,我们去找之前的各种文件档案,只要一打开硬盘,根据名字就可以找到,那么使用文件的原因是不是也就出来了:将数据存储在硬盘上,做到数据的持久化保存

什么是文件

首先磁盘上的文件是文件

在程序中,一般谈的文件有2种:程序文件   数据文件

程序文件包含源程序文件“.c”(文件后缀)

                         目标文件“.obj”

                         可执行程序“.exe”

                         .......

比如:(注意看文件后缀)

注:如果自己的文件打开没有后缀的,只需要设置一下就行了,比如:查看->显示->文件扩展名(勾选)

数据文件 文件的内容不一定是程序,而是程序运行时需要读取的数据,程序运行时需要从中读取数据的文件,或者输出内容的文件(简而言之,就是正在被读取的文件)

本篇讨论的是数据文件

一个文件要有唯一的文件标识,文件标识也叫文件名,下面我们看文件名字的组成:

文件名文件路径+文件主干+文件后缀

(绝对写法)比如:    C:\\ code \\ test . txt

分别指:            路径 \\ 主干. 后缀

(相对写法)比如:     text. txt

以上2种写法都是可以的(一种写完整,一种只写主干与后缀)

文件的打开与关闭

先看文件的运行方式:

我们知道硬盘是存储数据的,那么内存是用来运行的

打开文件之后,会在内存中产生一个文件信息区,这个文件信息区也就是一个结构体,它的类型是struct FILE

不同的编译器的FILE类型包含的内容不同,但都大同小异,每次打开一个文件,系统会根据文件的情况自动创建一个struct FILE类型的结构体,并填充信息

一般都是一个FILE的指针来维护这个结构体,比如:FILE * pf

简而言之,就是以下3步:

                                         1:打开文件

                                         2:在内存中产生一个文件信息区(  struct FILE类型  的结构体)

                                         3:创建一个FILE类型的指针来维护

比如进行画图演示:

文件的打开与关闭涉及到2个函数:  fopen(打开)     fclose(关闭)

我们先看文件的打开函数: 

它有2个参数,分别代表:     文件名     打开方式(对应上图的“模式”)

我们再看文件的关闭函数: 

它只有1个参数:   指向这个文件的指针

我们用例子给大家讲解,比如:

现在有这样一个文件:

现在我们打开它:(没有报错,说明打开成功了)

 注意:

文件目录是无法打开的,比如这些:

我们可以打开目录,右键->新建->文本文档(自己命名),就可以在VS里面打开了,比如: 

文件的使用方式

 我们知道在  fopen  函数里面有一个参数:文件的打开方式

那么这些方式就是以下:

它的用法就是作为参数传给 fopen 函数 ,比如:

文件的顺序读写

 我们先来看看什么是顺序读写?

 简而言之:从头读到尾,掌握读写函数

我们来看看顺序读写的各种函数:

 首先我们要明白输入跟输出的对象

这个内存可以理解为键盘

                                                             fgetc (读文件中的一个字符)

这个函数就一个参数:  指向文件的指针(也叫流)

                      返回值: int类型

啥意思呢?因为是顺序读写,所以这个函数会返回给你文件的一个字符,返回类型为int(被提升了)

比如写法:

                                                             fputc(写入文件一个字符)

有参数2个:      写入内容        指向文件的指针(也叫流)      

比如写法: 

我们把  写  跟  读   连起来用,比如我们先写(注意改变访问方式):

                                            这样我们就把内容写入文件了 ,如下图:

                                                           我们再把文件的内容读出来 

                                                           fgets(读文件中的字符串) 

参数:  char类型数组的数组名      读取个数(字节)     指向文件的指针(也叫流)

返回值: char *类型的指针

解释:char类型的数组是用来存储你要写入的字符串的

比如写法:(打印出来只需要打印这个接收的指针就OK了!)

                                                            fputs(写入字符串到文件)

 参数:    char类型的数组名或者字符串       指向文件的指针(也叫流)

比如一种写法:

下面表示我们已经写入成功了:

 第二种写法:

下面看效果: 

                                                          fprintf(格式化写入到文件)

2个参数:   指向文件的指针(也叫流)          各种占位符       对应结构体成员

我们知道文件信息区是类似结构体的,那么这种格式化输入就是结构体式的输入!

比如,写法:

下面看效果:

                                                               fscanf(格式化输出到屏幕)

2个参数:   指向文件的指针(也叫流)    占位符    对应结构体成员

用法跟上一个函数一样,比如:

                                                            fwrite(二进制形式写入文件)

4个参数:     元素地址       元素大小     元素个数      指向文件的指针(也叫流)

                                                                 比如:

写到文件: 

                                                             fread(二进制方式读取)

4个参数: 读取放入元素的地址   元素大小   元素个数    指向文件的指针(也叫流)

比如:

对“流”的解释

我们先来看标准定义:

简而言之:流就是一个中间媒介,介于   数据    跟   操作对象之间

通过“  流  ”让彼此产生连接

我们画图演示:

任何一个C语言程序运行时,默认打开3个流(类型都是FILE *):

stdin——标准输入(理解为键盘)

stdout——标准输出(理解为屏幕)

stderr——标准错误(理解为屏幕)

文件的随机读写

哈是随机读写?

就是不按顺序读呗!哈哈哈

和顺序读写类似,但是随机读写的函数少很多,我们分别来看看吧!

                                         fseek(根据文件指针的位置和偏移量来定位文件指针)

3个参数:    指向文件的指针(也叫流)     偏移量      起始位置

重点是这个起始位置参数(我们后面细说):

比如,现在我们打印完a,b,c,这个文件指针会指向d:

 

那么,既然文件指针指向了d,我如果还想打印b,这时候是不是就要改变指针的指向了! 

下面我们进行演示:

下面我们对这个参考位置进行细说:

 

SEEK_SET        表示指针指向文件开头位置(不是真的改变指针指向,只是做一个标记)

SEEK_CUR       表示指针指向文件当前位置(不实际改变指针指向,仅做一个标记)

上面是用SEEK_CUR进行的演示,下面我们用SEEK_SET进行演示:

以上就是fseek函数的运用,下面我们看另一个偏移函数! 

                                                        ftell(计算当前偏移量)

参数:  指向文件的指针(也叫流)

返回值:偏移量(int)

比如,我打印完a,b,c,指针现在指向d,那么偏移量从初始d,偏移量应该是3,下面演示:

 

                                                         rewind(让文件指针回到初始位置) 

参数:指向文件的指针(也叫流)

顾名思义,就是重置文件指针位置,下面进行演示:

先打印a,之后指针指向b,此时偏移量是1,现在重置偏移量,指针指向初始位置,偏移量也就是

C语言阶段了解这些已经超过很多人了!后续学习操作系统的伙伴,会了解的更深!

标签:文件,指向,留言,读写,收藏,参数,C语言,比如,指针
From: https://blog.csdn.net/Dovis5884/article/details/145207952

相关文章

  • 电脑 CMD 命令大全:简单粗暴收藏版
    说到CMD(命令提示符)命令,废话不多说,直接列命令和解释,网工必备,排障神器!系统操作类dir:列出当前目录下的所有文件和文件夹。cd:切换当前目录。md/rd:创建或删除文件夹。copy/xcopy:复制文件或目录。tasklist:查看当前运行的进程。taskkill:结束指定任务或进程。shutdown:执行定时......
  • C语言-预处理命令
    1、预处理命令是以# 开头的指令        用于在编译前对源代码进行一些处理2、与#号相关的代码    1、#include                用于在源代码中引入其他文件。可以引入标准库的头文件,也可以引入自定义的头              ......
  • C语言 - 函数
    1、作用    1、可以让程序模块化    2、可以减少重复代码    3、提高程序的可读性、可维护性和重用性2、函数的三个部分    1、函数的定义        函数类型函数名(数据类型1形参1,数据类型2形参2,...)     ......
  • 在C语言中实现封装、继承和多态
    在C语言中,没有直接的支持封装、继承和多态等面向对象特性。C语言是结构化编程语言,通常通过函数和数据结构(结构体)来实现类似的功能。我们可以通过结构体、函数指针、和手动管理的对象生命周期来模拟C++中的面向对象的特性。下面我们将逐一讨论如何在C语言中实现封装、继承和多......
  • C语言知识点
    前言这篇博客并不是我个人所写,是我在网络上无意间看到了markdown版本,我觉得很不错,为了方便我当助班时带的学弟学妹通过我的博客学习C语言,我把这篇文章放在了我的博客里面,便于他们学习。如有侵权,请联系我删除。目录前言第1章程序设计和C语言C语言的发展及其特点结构化......
  • 大数据毕业设计:python热门音乐数据分析系统+可视化+Flask框架 MySQL数据库 豆瓣音乐
    博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌>......
  • 嵌入式基础 C语言篇 数组.初阶
    一、基本概念逻辑:一次性定义多个相同类型的变量,并存储到一片连续的内存中语法释义:intbuf[5];buf是数组名,即这片连续内存的名称[5]代表这片连续内存总共分成5个相等的格子,每个格子称为数组的元素int代表每个元素的类型,可以是任意基本类型,也可以是组合类型,甚至可以是数组初......
  • 嵌入式基础 C语言篇 指针初阶
    一、指针的入门(1)、预备知识0、图解:1、内存地址字节:字节是内存的容量单位,英文称为byte,一个字节有8位,即1byte(00000000---11111111)=8bits(0---1)地址:系统为了便于区分每一个字节而对它们逐一进行的编号,称为内存地址,简称地址。在32位系统:说明:地址+1就是......
  • 嵌入式基础 C语言篇 错题
    (1) 若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是________。A.1     B.2    C.2.0    D.2.53/2=1;y=2.0(2)简述i++和++i    i++是先使用i的值,再i+1;++i是先i+1,再使用i的值底层原理:1、i++和++i都是带有返回值的函数2......
  • 第1讲:C语言常见概念
    目录1.C语言是什么?2.C语言的历史和辉煌3.编译器的选择VS20224.VS项目和源文件、头文件介绍5.第一个C语言程序6.main函数7.printf和库函数8.关键字介绍9.字符和ASCII编码10.字符串和\011.转义字符12.语句和语句分类13.注释是什么?为什么写注释?正文开始1.C语言......