当前位置: 首页 > news >正文

学习笔记——C语言基本概念文件——(13)

1、文件操作

1.1、文件概念

文件:实现数据存储的载体

1.2、文件的分类

按照数据的组织形式分类:

        1.字符文件/文本文件

        2.二进制文件

按照用途分类:

        1.系统文件

        2.库文件--标准库文件/非标准库文件(第三方库)

        3.用户文件

Linux下的文件分类:

        -: 普通文件
        d: 目录文件/文件夹
        s: 套接字文件
        p: 管道文件
        l(小写的 L): 链接文件
        c: 字符设备文件
        b: 块设备文件


1.3、文件操作相关的函数

函数:man1 一般是指令

           man2 一般是系统相关函数

           man3一般是C语言标准库函数

文件操作相关流程:
        1.打开文件--仅仅得到一个文件描述符

        2.写/读--用函数操作文件描述符

        3.关闭文件

1.3.1 打开文件

函数的头文件为:#include<stdio.h>

函数名:fopen

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

形参:pathname:路径下的文件名

            mode:打开文件的模式

“r”:   只读的方式打开, 光标在文件开头, 文件不存在, 打开失败!
“r+”: 读写的方式打开, 光标在文件开头, 文件不存在, 打开失败!
“w”: 只写的方式打开, 光标在文件开头, 文件不存在, 创建并打开, 文件存在, 清空
写!
“w+”: 读写的方式打开, 光标在文件开头, 文件不存在, 创建并打开, 文件存在, 清
空写!
“a”: 追加写, 光标在文件末尾, 文件如果不存在, 创建并打开;
“a+”: 可读可写, 根据你第一次操作该文件来确定光标位置, 第一次如果是读,光标默认在文件开头,第一次如果是写,光标在文件末尾;

返回值:

成功返回,FILE*;类型的文件描述符

失败:NULL;

#include<stdio.h>
int main()
{FILE*fp=fopen("./1.txt","r+");if(fp==NULL){printf("文件打开失败");return ;}return;
}

如果1.txt是存在的:打开成功,后续fp就代表1.txt这个文件

如果1.txt是不存在的:打开失败!

插入:perror--打印失败信息

头文件:#include<stdio.h>

函数原型:void perror(const char *s);

形参:s--提供一个字符串即可

功能:打印距离它最近的函数执行失败的原因;注意:这个离它最近的函数指的是从上到下的近。

1.3.2 关闭函数

头文件:#include<stdio.h>

函数原型:int fclose(FILE *stream);

形参:stream:用fopen打开文件得到的文件描述符

返回值:

        成功返回:0

        失败返回:-1

1.3.3 读和写函数

1单字符的读和写

        单字符的写:fputc

        头文件:#include<stdio.h>

        函数原型:int fputc(int c, FILE *stream);

        形参:c--传入char类型的单字符

        将字符c写到文件指针所指向的文件的当前写指针的位置

        stream--文件描述符

        返回值:

                成功:返回写入的单字符

                失败:返回-1

        单字符的读:fgetc

        头文件:#include<stdio.h>

        函数原型:int fgetc(FILE *stream);

        形参: stream-文件描述符
        返回值:
                成功: 读取到的单字符, 用 char 类型来承接;
                失败/读到文件末尾: -1

        插入: rewind: 光标偏移至文件开头
        void rewind(FILE *stream);
        stream: fopen 的返回值
        功能: 光标偏移至文件开头


2 字符串的读和写

        字符串的写:fputs

        函数原型:int fputs(const char *s, FILE *stream);
        形参: s: 要写入文件中的字符串的首地址
                        stream: fopen 的返回值;
        返回值: 成功返回一个非负数( 通常为 1) , 失败返回-1


        字符串的读: fgets
        函数原型:char *fgets(char *s, int size, FILE *stream);
        形参: s: 读取到的内容存放的位置的首地址;
                    size: 你要读多大! !
                    stream: fopen 的返回值;
                    返回值: 成功: char * -- 依旧是 s
                    失败: NULL

C语言默认打开的三个文件

标准输入文件描述符--stdin--对应键盘

标准输出文件描述符--stdout--对应屏幕

标准出错文件描述符--stderr--对应屏幕

3格式化的读和写

        格式化写入:fprintf

        fprintf(fopen(返回值),“原样输出+格式控制符”,输出列表)

        注意:fprintf(stdout,“hello\n”); == printf(“hello\n”);

        格式化读取:fscanf

        要求:fscanf从文件中读,要求格式和fprintf()写入时一模一样;

        这两个函数必须是配合使用的

举例说明:

int a=10,b=20,c=30;fprintf(fp,”%d-%d-%d\n”,a,b,c);int x,y,z;fscanf(fp,”%d-%d-%d\n”,&x,&y,&z);

4 块读 块写(二进制,要配合使用)

块写:fwrite

函数原型:size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);
形参:ptr:要写入的内容的首地址

        size:一次写多大

        nmemb:写几次

        stream:fopen的返回值;

        返回值:真正写入的次数

块读:fread

函数原型:size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);

形参:ptr:读取的内容存放的位置的首地址

        size:一次读多大

        nmemb:读几次

        stream:fopen的返回值;

        返回值:成功:真正读取的次数,

遇到文件末尾,返回0

光标偏移函数:fseek

头文件:#include<stdio.h>

函数原型:int fseek(FILE *stream, long offset,int whence);

形参:stream:文件描述符

offset:偏移量+往文件末尾方向-往文件开头方向

whence:相对位置

SEEK_SET 文件开头
SEEK_CUR 当前位置
SEEK_END 文件末尾
fseek(fp,0,SEEK_SET); == rewind(fp); 以文件开头为起始位置, 偏移 0 字节


ftell函数:计算光标当前位置举例文件开头的偏移量

函数原型:long ftell(FILE *stream);

形参:stream:文件描述符

返回值:光标当前位置举例文件开头的偏移量

程序中计算文件的大小

fessk(fp,0,SEEK_END);//光标达到文件末尾

long num=ftell(fp);//num就是文件大小

相关文章:

学习笔记——C语言基本概念文件——(13)

1、文件操作 1.1、文件概念 文件&#xff1a;实现数据存储的载体 1.2、文件的分类 按照数据的组织形式分类&#xff1a; 1.字符文件/文本文件 2.二进制文件 按照用途分类&#xff1a; 1.系统文件 2.库文件--标准库文件/非标准库文件&#xff08;第三方库&#xff09; 3.用…...

【MySQL】事务篇

SueWakeup 个人主页&#xff1a;SueWakeup 系列专栏&#xff1a;学习技术栈 个性签名&#xff1a;保留赤子之心也许是种幸运吧 目录 本系列专栏 1. 什么是事务 2. 事务的特征 原子性&#xff08;Atomicity&#xff09; 一致性&#xff08;Consistency&#xff09; 隔离性&…...

tsconfig.json文件常用配置

最近在学ts&#xff0c;因为tsconfig的配置实在太多啦&#xff0c;所以写此文章用作记录&#xff0c;也作分享 作用&#xff1f; tsconfig.jsono是ts编译器的配置文件&#xff0c;ts编译器可以根据它的信息来对代码进行编译 初始化一个tsconfig文件 tsc -init配置参数解释 …...

【Linux】tcpdump P1 - 网络过滤选项

文章目录 选项 -D选项 -c X选项 -n选项 -s端口捕获 port选项 -w总结 tcpdump 实用程序用于捕获和分析网络流量。系统管理员可以使用它来查看实时流量或将输出保存到文件中稍后分析。本文将演示在日常使用 tcpdump时可能想要使用的几种常见选项。 选项 -D 使用-D 选项的 tcpdu…...

网络篇04 | 应用层 mqtt(物联网)

网络篇04 | 应用层 mqtt&#xff08;物联网&#xff09; 1. MQTT协议介绍1.1 MQTT简介1.2 MQTT协议设计规范1.3 MQTT协议主要特性 2 MQTT协议原理2.1 MQTT协议实现方式2.2 发布/订阅、主题、会话2.3 MQTT协议中的方法 3. MQTT协议数据包结构3.1 固定头&#xff08;Fixed header…...

Transformer模型-decoder解码器,target mask目标掩码的简明介绍

今天介绍transformer模型的decoder解码器&#xff0c;target mask目标掩码 背景 解码器层是对前面文章中提到的子层的包装器。它接受位置嵌入的目标序列&#xff0c;并将它们通过带掩码的多头注意力机制传递。使用掩码是为了防止解码器查看序列中的下一个标记。它迫使模型仅使用…...

All in One:Prometheus 多实例数据统一管理最佳实践

作者&#xff1a;淡唯&#xff08;啃唯&#xff09;、阳其凯&#xff08;逸陵&#xff09; 引言 Prometheus 作为目前最主流的可观测开源项目之一&#xff0c;已经成为云原生监控的事实标准&#xff0c;被众多企业广泛应用。在使用 Prometheus 的时候&#xff0c;我们经常会遇…...

mysql报错-mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止和数据恢复

启动mysql服务时出现该错误: 本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止。 我的mysql版本是8.0.18 系统&#xff1a;win10 如何安装mysql&#xff0c;可以看我这一篇文章&#xff1a;mysql的安装 ---必会 - bigbigbrid - 博客园 (cn…...

Java开发从入门到精通(二十):Java的面向对象编程OOP:File文件操作的增删改查

Java大数据开发和安全开发 &#xff08;一&#xff09;Java的文件操作1.1 Java的File和IO流概念1.2 File类的使用1.2.1 创建File类的对象1.2.2 常用方法1:判断文件类型、获取文件信息1.2.3 常用方法2:创建文件、删除文件1.2.4 常用方法3:遍历文件夹 1.3 java File的方法递归1.3…...

10.list的模拟实现(普通迭代器和const迭代器的类模板)

1. list的介绍及使用 1.1 list的介绍 list的文档介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过…...

【电控笔记5】电流环速度环三环参数整定

旋转坐标系下的电压方程,由id和iq计算出ud和uq Lq:q轴电感 Ld:d轴电感 输入是电流,输出是电压? 内嵌式pmsm(ipmsm)模型建立: 其中: λf是转子磁场在定子绕组所产生的磁通链,为一常数,在psms中转子磁场非常稳定几乎不变。 ipmsm转矩方程式: 对永磁同步马达而言,使…...

AI克隆语音(基于GPT-SoVITS)

概述 使用GPT-SoVITS训练声音模型&#xff0c;实现文本转语音功能。可以模拟出语气&#xff0c;语速。如果数据质量足够高&#xff0c;可以达到非常相似的结果。相比于So-VITS-SVC需要的显卡配置更低&#xff0c;数据集更小&#xff08;我的笔记本NVIDIA GeForce RTX 4050 Lap…...

小蚕爬树问题

小蚕爬树问题 问题描述&#xff1a; 编写一个函数 int day(int k,int m,int n),其功能是&#xff1a;返回小蚕需要多少天才能爬到树顶&#xff08;树高 k 厘米&#xff0c;小蚕每天白天向上爬 m 厘米&#xff0c;每天晚上下滑 n 厘米&#xff0c;爬到树顶后不再下滑&#xff0…...

科研学习|科研软件——如何使用SmartPLS软件进行结构方程建模

SmartPLS是一种用于结构方程建模&#xff08;SEM&#xff09;的软件&#xff0c;它可以用于定量研究&#xff0c;尤其是在商业和社会科学领域中&#xff0c;如市场研究、管理研究、心理学研究等。 一、准备数据 在使用SmartPLS之前&#xff0c;您需要准备一个符合要求的数据集。…...

实用工具系列-ADB使用方式

作者持续关注 WPS二次开发专题系列&#xff0c;持续为大家带来更多有价值的WPS开发技术细节&#xff0c;如果能够帮助到您&#xff0c;请帮忙来个一键三连&#xff0c;更多问题请联系我&#xff08;WPS二次开发QQ群:250325397&#xff09;&#xff0c;摸鱼吹牛嗨起来&#xff0…...

计算机网络书籍--《网络是怎样连接的》阅读笔记

第一章 浏览器生成信息 1.1 生成HTTP请求信息 1.1.1 URL Uniform Resource Locator, 统一资源定位符。就是网址。 不同的URL能够用来判断使用哪种功能来访问相应的数据&#xff0c;比如访问Web服务器就要用”http:”&#xff0c;而访问FTP服务器用”ftp:”。 FTP&#xff…...

antd+vue——datepicker日期控件——禁用日期功能

需求&#xff1a;今天之前的日期禁用 <a-date-pickerv-model.trim"formNE.deliveryTime":disabled-date"disabledDate"valueFormat"YYYY-MM-DD"allowClearstyle"width: 100%" />禁用日期的范围&#xff1a; //时间范围 disab…...

技术分享 | Appium 用例录制

下载及安装 下载地址&#xff1a; github.com/appium/appi… 下载对应系统的 Appium 版本&#xff0c;安装完成之后&#xff0c;点击 “Start Server”&#xff0c;就启动了 Appium Server。 在启动成功页面点击右上角的放大镜&#xff0c;进入到创建 Session 页面。配置好…...

[蓝桥杯 2018 省 A] 付账问题

【蓝桥杯】付账问题 [蓝桥杯 2018 省 A] 付账问题 题目描述 几个人一起出去吃饭是常有的事。但在结帐的时候&#xff0c;常常会出现一些争执。 现在有 n n n 个人出去吃饭&#xff0c;他们总共消费了 S S S 元。其中第 i i i 个人带了 a i a_i ai​ 元。幸运的是&#…...

设计模式|装饰器模式(Decorator Pattern)

文章目录 结构优缺点优点缺点适用场景示例装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许在不改变原始对象的基础上,动态地给对象添加新的功能或责任。这种模式是通过创建一个包装对象,也就是装饰器,来包裹真实的对象,然后在装饰器中添加新的行为或功能。这…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...