当前位置: 首页 > 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)是一种结构型设计模式,它允许在不改变原始对象的基础上,动态地给对象添加新的功能或责任。这种模式是通过创建一个包装对象,也就是装饰器,来包裹真实的对象,然后在装饰器中添加新的行为或功能。这…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

如何配置一个sql server使得其它用户可以通过excel odbc获取数据

要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据&#xff0c;你需要完成以下配置步骤&#xff1a; ✅ 一、在 SQL Server 端配置&#xff08;服务器设置&#xff09; 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到&#xff1a;SQL Server 网络配…...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口&#xff08;interface&#xff09;二、socket.cpp 实现&#xff08;implementation&#xff09;三、server.cpp 使用封装&#xff08;main 函数&#xff09;四、client.cpp 使用封装&#xff08;main 函数&#xff09;五、退出方法…...