【C语言标准库函数】标准输入输出函数详解[4]:二进制文件读写函数
目录
一、fread() 函数
1.1. 函数简介
1.2. fread 使用场景
1.3. 注意事项
1.4. 示例
二、fwrite() 函数
2.1. 函数简介
2.2. fwrite 使用场景
2.3. 注意事项
2.4. 示例
三、总结
在 C 语言中,二进制文件读写函数允许以二进制形式对文件进行读写操作,这种方式可以高效地处理非文本数据,如图片、音频、视频等。
一、fread()
函数
1.1. 函数简介
函数原型:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
- 功能:从文件流中读取数据。
- 参数:
ptr
:指向存储读取数据的缓冲区的指针。size
:每个数据项的大小(以字节为单位)。nmemb
:要读取的数据项的数量。stream
:文件指针。
- 返回值:实际读取的数据项的数量,可能会小于请求的数量。
1.2. fread 使用场景
fread 函数是 C 语言中用于从文件中读取数据到缓冲区的一个非常强大的工具。它特别适用于处理二进制文件,但也同样适用于文本文件。fread 的使用场景包括但不限于。
- 读取二进制文件:如读取图像文件、音频文件或其他任何类型的二进制数据。fread 能够按字节精确控制数据的读取,非常适合处理这类文件。
- 读取大型数据文件:当需要处理的数据量非常大时,fread 可以通过控制读取的块大小(size 和 count 参数)来优化内存使用和读取速度。
- 结构体的序列化与反序列化:在需要将结构体数据保存到文件,或从文件中恢复结构体数据时,fread 可以用来读取或写入结构体的字节表示。
1.3. 注意事项
- 文件打开模式:在使用 fread 之前,需要确保文件以正确的模式(如 "rb" 用于二进制读取)打开。
- 缓冲区分配:需要为 fread 提供一个足够大的缓冲区来存放读取的数据。如果缓冲区太小,可能会导致数据丢失或读取失败。
- 返回值检查:fread 的返回值是实际读取的数据项个数,可能与请求读取的项数不同(如到达文件末尾或发生错误)。因此,需要检查返回值以确保读取成功。
- 文件关闭:完成文件读取后,应使用 fclose 函数关闭文件,以释放资源并避免潜在的文件损坏。
- 错误处理:应准备好处理 fread 可能遇到的错误,如文件不存在、读取权限不足等。
1.4. 示例
以下是一个使用 fread 读取二进制文件的简单示例:
#include <stdio.h>
#include <stdlib.h> int main() { FILE *fp; int data[10]; // 假设我们要读取10个整数 size_t numRead; // 以二进制读取模式打开文件 fp = fopen("data.bin", "rb"); if (fp == NULL) { printf("Failed to open file\n"); return 1; } // 读取数据 numRead = fread(data, sizeof(int), 10, fp); // 检查是否成功读取了所有数据 if (numRead < 10) { if (feof(fp)) { printf("End of file reached before reading 10 integers\n"); } else if (ferror(fp)) { perror("Error reading file"); } } // 关闭文件 fclose(fp); // 假设这里对读取到的数据进行处理... return 0;
}
尝试从名为 "data.bin" 的二进制文件中读取 10 个整数,并将它们存储在 data
数组中。检查 fread 的返回值以确保所有数据都被成功读取,并在读取完毕后关闭文件。如果读取过程中遇到错误或到达文件末尾,我们会相应地打印错误信息或提示。
二、fwrite()
函数
2.1. 函数简介
函数原型:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
- 功能:向文件流中写入数据。
- 参数:
ptr
:指向要写入数据的缓冲区的指针。size
:每个数据项的大小(以字节为单位)。nmemb
:要写入的数据项的数量。stream
:文件指针。
- 返回值:实际写入的数据项的数量,可能会小于请求的数量。
2.2. fwrite 使用场景
fwrite 函数是一个广泛使用的文件写入函数,尤其在C/C++等编程语言中。它的主要使用场景包括:
- 写入二进制文件:fwrite 非常适合将二进制数据写入文件,比如图片、音频文件或任何需要以字节为单位存储的数据。
- 写入结构体数据:当需要将结构体数据持久化到文件中时,fwrite 可以将结构体的内存表示直接写入文件,方便后续的读取和恢复。
- 写入文本文件:尽管通常推荐使用更适合文本处理的函数(如fprintf)写入文本文件,但fwrite 同样可以用于写入文本数据,尤其是在处理非ASCII字符或需要精确控制字节写入时。
- 日志记录:在某些情况下,fwrite 可以用于将程序的日志信息写入文件,尽管这通常不是其首选用途,因为它不提供格式化输出的功能。
- 配置文件写入:在需要将配置信息保存到文件中时,fwrite 可以将配置数据以二进制或文本形式写入,取决于数据的性质和文件的使用方式。
- 网络数据保存:在处理网络数据时,fwrite 可以用于将接收到的网络数据保存到本地文件中,以便后续分析或处理。
2.3. 注意事项
- 文件打开模式:在使用 fwrite 之前,需要确保文件以正确的模式(如 "wb" 用于二进制写入)打开。
- 数据类型匹配:写入的数据类型应与文件打开模式相匹配。例如,以二进制模式打开的文件应写入字节数据。
- 缓冲区大小:fwrite 允许一次性写入多个数据项,但需要注意缓冲区的大小,以避免溢出或不必要的内存使用。
- 返回值检查:fwrite 的返回值表示实际写入的数据项个数,可能与请求写入的数据项个数不同。应检查返回值以确保数据正确写入。
- 文件关闭:完成文件写入后,应使用 fclose 函数关闭文件,以释放资源并避免潜在的文件损坏。
- 错误处理:应准备好处理 fwrite 可能遇到的错误,如磁盘空间不足、写入权限不足等。
2.4. 示例
以下是一个使用 fwrite 写入二进制数据的简单C语言示例:
#include <stdio.h> int main() { FILE *fp; char *data = "Hello, World!"; // 注意:这里以字符串为例,实际二进制数据应使用字节数组 size_t written; // 以二进制写入模式打开文件 fp = fopen("output.bin", "wb"); if (fp == NULL) { perror("Failed to open file"); return 1; } // 注意:如果写入的是字符串,并且文件是二进制模式,可能需要转换为字节数组 // 这里为了简化示例,直接写入字符串(在实际二进制文件中可能不适用) // 正确的做法是将字符串转换为字节数组,或者确保文件以文本模式打开 written = fwrite(data, sizeof(char), strlen(data), fp); // 检查是否成功写入所有数据 if (written < strlen(data)) { perror("Error writing to file"); } // 关闭文件 fclose(fp); return 0;
} // 注意:上面的示例为了简化,直接将字符串写入了二进制文件。
// 在实际应用中,如果文件是二进制文件,应该使用字节数组来存储要写入的数据。
// 例如,可以将字符串转换为字节数组,或者使用其他二进制数据作为fwrite的参数。
上面的示例中直接写入了字符串,在处理二进制文件时通常不是最佳做法。在处理二进制文件时,应使用字节数组来存储和写入数据。此外,如果文件是以文本模式打开的(如 "wt"),则不应使用 fwrite 写入二进制数据,而应使用如 fprintf 之类的函数。
三、总结
二进制文件读写在C语言中主要通过fwrite
和fread
函数实现。fwrite
用于将数据以二进制形式写入文件,而fread
则用于从文件中读取二进制数据。这两个函数都需指定数据指针、数据项大小、数据项数量以及文件指针。在使用时,要确保文件以二进制模式打开,并注意检查返回值以处理可能的错误。二进制文件读写提供了对文件内容的低级访问,适用于需要直接处理原始数据的场景。
相关文章:
【C语言标准库函数】标准输入输出函数详解[4]:二进制文件读写函数
目录 一、fread() 函数 1.1. 函数简介 1.2. fread 使用场景 1.3. 注意事项 1.4. 示例 二、fwrite() 函数 2.1. 函数简介 2.2. fwrite 使用场景 2.3. 注意事项 2.4. 示例 三、总结 在 C 语言中,二进制文件读写函数允许以二进制形式对文件进行读写操作&…...
图像锐化(QT)
如果不使用OpenCV,我们可以直接使用Qt的QImage类对图像进行像素级操作来实现锐化。锐化算法的核心是通过卷积核(如拉普拉斯核)对图像进行处理,增强图像的边缘和细节。 以下是一个完整的Qt应用程序示例,展示如何使用Qt…...
Apache Kafka 消息清理之道
前言 消息的清理是 MQ 中间件的基本能力,可以避免 MQ 的存储占用空间无序增长。与其他消息产品不同,Apache Kafka(以下简称 Kafka) 中 topic 上的消息被消费后不会被马上清除,而是由 topic 级别的清理策略来控制。本文将简要介绍 Kafka 中的…...
JVM ①-类加载 || 内存区域
这里是Themberfue 终于结束了网络层的学习,当然,我们学习的知识也只是冰山一角,想要了解更多的知识,还请大家养成主动探索的习惯~~~接下来我们将对 JVM 的一些机制进行简单的讲解,对于 Java程序员来说,本身…...
物理信息机器学习(PIML)的基础探讨及技术实现
在传统机器学习方法迅速发展并在图像识别、语音处理、自然语言处理等领域取得显著突破的同时,科学计算、工程设计以及自然系统建模等领域常常面临数据不足、噪声干扰以及模型泛化能力弱的问题。单纯依赖数据驱动的“黑箱”模型在处理物理问题时,往往难以兼顾数据拟合与物理解…...
【浏览器多开】Google Chrome 谷歌浏览器分身术
谷歌浏览器分身术(多开): 复制已有谷歌浏览器图标—>右键–>属性的目标栏中,添加 --user-data-dir自定义文件夹路径 参数。 例如: C:\MySpace\02Installed\Chrome\Chrome-bin\99.0.4844.51\chrome.exe –user-d…...
《量化绿皮书》Chapter 3 Calculus and Linear Algebra 微积分与线性代数(二)
《A Practical Guide To Quantitative Finance Interviews》,被称为量化绿皮书,是经典的量化求职刷题书籍之一,包含以下七章: Chapter 1 General Principles 通用技巧 Chapter 2 Brain Teasers 脑筋急转弯 Chapter 3 Calculus and…...
单片机成长之路(51基础篇) - 008 C51 的标示符和关键字
标准 C 语言定义了 32 个关键字,如下表(ANSI C的32个关键字): C51在此基础上针对单片机功能进行了扩展,详情见下表(C51编译器扩充关键字): C 51的数据类型 51单片机使用的C语言的存储器类型分为以下几种:...
嵌入式AI革命:DeepSeek开源如何终结GPU霸权,开启单片机智能新时代?
2025年,全球AI领域最震撼的突破并非来自算力堆叠的超级模型,而是中国团队DeepSeek通过开源策略,推动大模型向微型化、低功耗场景的跨越。相对于当人们还在讨论千亿参数模型的训练成本被压缩到600万美金而言,被称作“核弹级别”的操…...
Deno vs Node.js:性能对比深度解析
1. 引言 Deno 和 Node.js 都是基于 V8 引擎的 JavaScript 运行时环境,然而它们在架构、模块管理、安全性和性能方面存在显著差异。Deno 由 Node.js 的原始作者 Ryan Dahl 开发,旨在解决 Node.js 设计上的一些问题,比如包管理、安全模型和 Ty…...
【R】Dijkstra算法求最短路径
使用R语言实现Dijkstra算法求最短路径 求点2、3、4、5、6、7到点1的最短距离和路径 1.设置data,存放有向图信息 data中每个点所在的行序号为起始点序号,列为终点序号。 比如:值4的坐标为(1,2)即点1到点2距离为4;值8的坐标为(6,7)…...
网络安全治理架构图 网络安全管理架构
网站安全攻防战 XSS攻击 防御手段: - 消毒。 因为恶意脚本中有一些特殊字符,可以通过转义的方式来进行防范 - HttpOnly 对cookie添加httpOnly属性则脚本不能修改cookie。就能防止恶意脚本篡改cookie 注入攻击 SQL注入攻击需要攻击者对数据库结构有所…...
@emotion/styled / styled-components创建带有样式的 React 组件
一、安装依赖 npm install emotion/styled styled-components 二、使用 import styled from emotion/styled; import styled from styled-components;// 创建一个带样式的按钮 const StyledButton styled.buttonbackground-color: #4caf50;color: white;padding: 10px 20px…...
Gemini 2.0模型更新:谷歌最新AI大模型全面开启智能时代
引言 2025年2月5日,谷歌人工智能实验室(Google DeepMind)发布了最新的Gemini 2.0模型系列更新,包括2.0 Flash、Flash-Lite和Pro实验版本。这些AI大模型的发布标志着人工智能技术在性能、效率和多模态能力上的进一步突破ÿ…...
MySQL 主从复制原理及其工作过程
一、MySQL主从复制原理 MySQL 主从同步是一种数据库复制技术,它通过将主服务器上的数据更改复制到一个或多个从服务器,实现数据的自动同步。 主从同步的核心原理是将主服务器上的二进制日志复制到从服务器,并在从服务器上执行这些日志…...
详解在Pytest中忽略测试目录的三种方法
关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 你是否曾因无关或过时的代码导致测试失败? 这可能会增加调试和故障排除…...
ZoneMinder index.php存在SQL注入漏洞(CVE-2024-43360)
免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...
【DeepSeek】DeepSeek概述 | 本地部署deepseek
目录 1 -> 概述 1.1 -> 技术特点 1.2 -> 模型发布 1.3 -> 应用领域 1.4 -> 优势与影响 2 -> 本地部署 2.1 -> 安装ollama 2.2 -> 部署deepseek-r1模型 1 -> 概述 DeepSeek是由中国的深度求索公司开发的一系列人工智能模型,以其…...
webGL
WebGL:3D图形的网络标准 WebGL(Web Graphics Library)是一种3D绘图协议,它允许开发者在不需要任何插件的情况下,在网页浏览器中创建交互式2D和3D效果。WebGL是基于OpenGL ES的JavaScript API,它可以为HTML5…...
电脑远程控制vivo手机,切换按钮就能让vivo仅投屏、不受控制!
Linux系统在全球的市场份额并不高,继而很多便捷的软件都没有Linux的版本。如果想要用Linux远程控制安卓手机,找软件会比较麻烦,但是AirDroid网页版可以做到。 以vivo手机为例子,接下来讲解Linux系统电脑要远程控制安卓手机时&…...
MS17-010(永恒之蓝1.0)漏洞远程控制win7系统操作实战小白通俗易懂
1.准备环境win7操作系统(被攻击机)以及kali系统(攻击机),kali使用msf工具进行攻击。 2.打开kali终端,进入msf,输入msfconsole然后等待启动。 ┌──(root㉿kali-chifan)-[~] └─# msfconsole…...
【Java计算机毕业设计】基于Springboot+Vue社区志愿者管理系统【源代码+数据库+LW文档+开题报告+答辩稿+部署教程+代码讲解】
源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储:…...
三次握手,四次挥手,服务器模型(多进程并发,线程),基于套接字的UDP通信
三次握手: 第一次握手:客户端向服务器发送SYN待确认数据x, 客户端进入SYN_SEND状态 第二次握手:服务器向客户端回传一条ACK应答数据x1, 同时发送一条SYN待确认数据y,服务器进入SYN_RECV状态 第三次握手:客户端向服…...
通讯录管理小程序
通讯录管理系统 是对c基础语法的巩固,比较简单的一个小程序,重点在于养成良好的c代码习惯。 通讯录是一个可以记录亲人、好友信息的工具。 本教程主要利用C来实现一个通讯录管理系统 下面是一些需要实现的功能: 1. 添加联系人 功能描述&…...
[ESP32:Vscode+PlatformIO]添加第三方库 开源库 与Arduino导入第三方库的区别
前言 PlatformIO与Arduino在添加第三方库方面的原理存在显著差异 在PlatformIO中,第三方库的使用是基于项目(工程)的。具体而言,只有当你为一个特定的项目添加了某个第三方库后,该项目才能使用该库。这些第三方库的文…...
SpringSecurity:授权服务器与客户端应用(入门案例)
文章目录 一、需求概述二、开发授权服务器1、pom依赖2、yml配置3、启动服务端 三、开发客户端应用1、pom依赖2、yml配置3、SecurityConfig4、接口5、测试 一、需求概述 maven需要3.6.0以上版本 二、开发授权服务器 1、pom依赖 <dependency><groupId>org.springfr…...
k8s证书过期怎么更新?
在 Kubernetes 集群中,证书过期可能导致集群不可用,尤其是 API Server、Controller Manager、Scheduler 等组件所使用的证书。为了恢复集群的正常运行,您需要更新这些证书。以下是更新 Kubernetes 证书的基本步骤: 1. 检查证书状…...
【戒抖音系列】短视频戒除-1-对推荐算法进行干扰
如今推荐算法已经渗透到人们生活的方方面面,尤其是抖音等短视频核心就是推荐算法。 【短视频的危害】 1> 会让人变笨,慢慢让人丧失注意力与专注力 2> 让人丧失阅读长文的能力 3> 让人沉浸在一个又一个快感与嗨点当中。当我们刷短视频时&#x…...
VUE 集成企微机器人通知
message-robot 便于线上异常问题及时发现处理,项目中集成企微机器人通知,及时接收问题并处理 企微机器人通知工具类 export class MessageRobotUtil {constructor() {}/*** 发送 markdown 消息* param robotKey 机器人 ID* param title 消息标题* param…...
封装descriptions组件,描述,灵活
效果 1、组件1,dade-descriptions.vue <template><table><tbody><slot></slot></tbody> </table> </template><script> </script><style scoped>table {width: 100%;border-collapse: coll…...
等级保护2.0|网络安全服务
等级保护2.0|网络安全服务 定义 对于国家秘密信息、法人和其他组织及公民专有信息以及公开信息的存储、传输、处理这些信息系统分等级实行安全保护,对信息系统中发生的信息安全时间分等级响应、处置。 思想 对信息安全实行等级化保护和等级化管理 目标 突出重…...
STM32 RTC亚秒
rtc时钟功能实现:rtc模块在stm32内部,由电池或者主电源供电。如下图,需注意实现时仅需设置一次初始化。 1、stm32cubemx 代码生成界面设置,仅需开启时钟源和激活日历功能。 2、生成的代码,需要对时钟进行初始化,仅需…...
H5+CSS+JS制作好看的轮播图
先来看效果 点击下方按钮可以做到平滑切换轮播,轮播图片可以根据自定义随心变化。 先来看一下页面代码结构 <div class"container"><div class"lunbo-wrap"><div id"slide"></div><div class"butto…...
Win10 部署llama Factory 推荐教程和遇到的问题
教程 【大模型微调】使用Llama Factory实现中文llama3微调_哔哩哔哩_bilibili 大模型微调!手把手带你用LLaMA-Factory工具微调Qwen大模型!有手就行,零代码微调任意大语言模型_哔哩哔哩_bilibili 遇到问题解决办法 pytorch gpu国内镜像下载…...
Visual Studio踩过的坑
统计Unity项目代码行数 编辑-查找和替换-在文件中查找 查找内容输入 b*[^:b#/].*$ 勾选“使用正则表达式” 文件类型留空 也有网友做了指定,供参考 !*\bin\*;!*\obj\*;!*\.*\*!*.meta;!*.prefab;!*.unity 打开Unity的项目 注意:只是看࿰…...
idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡
idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡 问题 idea编译器 安装copilot AI工具 实际操作 在 IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤如下: 打开 IntelliJ IDEA: 打开你的 IntelliJ IDEA 应用…...
Leetcode 3449. Maximize the Minimum Game Score
Leetcode 3449. Maximize the Minimum Game Score 1. 解题思路2. 代码实现 题目链接:3449. Maximize the Minimum Game Score 1. 解题思路 这一题思路上就是一个二分法,尝试各个score,看看是否可以满足在给定的m次操作限制下,使…...
DeepSeek深度思考:客户端(Android/iOS)架构设计指南
目标读者:中高级开发者、架构师 适用场景:大型复杂应用开发、跨团队协作、长期维护迭代 一、架构设计核心原则 1.模块化(Modularization) 横向拆分:按功能边界划分(如登录、支付、消息模块)纵向…...
智能理解 PPT 内容,快速生成讲解视频
当我们想根据一版 PPT 制作出相对应的解锁视频时,从撰写解锁词,录制音频到剪辑视频,每一个环节都需要投入大量的时间和精力,本方案将依托于阿里云函数计算 FC 和百炼模型服务,实现从 PPT 到视频的全自动转换࿰…...
HTML 颜色值
HTML 颜色值 引言 在网页设计和开发中,颜色是一个重要的元素,它能够影响用户的视觉体验和网站的视觉效果。HTML 颜色值是网页设计中用来指定文本、背景或其他元素颜色的标准。本文将详细介绍 HTML 颜色值的概念、类型、表示方法以及在实际应用中的注意事项。 HTML 颜色值的…...
kafka消费端之消费者协调器和组协调器
文章目录 概述回顾历史老版本获取消费者变更老版本存在的问题 消费者协调器和组协调器新版如何解决老版本问题再均衡过程**第一阶段CFIND COORDINATOR****第二阶段(JOINGROUP)**选举消费组的lcader选举分区分配策略 第三阶段(SYNC GROUP&…...
【C++】解锁<list>的正确姿势
> 🍃 本系列为初阶C的内容,如果感兴趣,欢迎订阅🚩 > 🎊个人主页:[小编的个人主页])小编的个人主页 > 🎀 🎉欢迎大家点赞👍收藏⭐文章 > ✌️ 🤞 …...
【玩转全栈】----Django模板的继承
先赞后看,养成习惯!!! 目录 模板继承的好处 模板继承的语法规则 更新代码 上文中的部门管理页面: 【玩转全栈】----Django制作部门管理页面-CSDN博客 大家会发现,由于定义了多个html文件,多个ht…...
【紫光同创PG2L100H开发板】盘古676系列,盘古100Pro+开发板,MES2L676-100HP
本原创文章由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com) 一:开发系统介绍 开发系统概述 MES2L676-100HP开发板采用紫光创 logos2系列 FPGA,型号&#x…...
Mac下使用brew安装go 以及遇到的问题
首先按照网上找到的命令进行安装 brew install go 打开终端输入go version,查看安装的go版本 go version 配置环境变量 查看go的环境变量配置: go env 事实上安装好后的go已经可以使用了。 在home/go下新建src/hello目录,在该目录中新建…...
活动预告 |【Part 2】Microsoft 安全在线技术公开课:通过扩展检测和响应抵御威胁
课程介绍 通过 Microsoft Learn 免费参加 Microsoft 安全在线技术公开课,掌握创造新机遇所需的技能,加快对 Microsoft Cloud 技术的了解。参加我们举办的“通过扩展检测和响应抵御威胁”技术公开课活动,了解如何更好地在 Microsoft 365 Defen…...
android的DataBinding简介
Android DataBinding 简介 DataBinding 是 Android Jetpack 中的数据绑定库,用于将 UI 组件直接与数据模型绑定,减少模板代码并实现双向数据同步。它通过声明式布局简化 UI 更新逻辑,常用于 MVVM(Model-View-ViewModel࿰…...
基于DeepSeek API和VSCode的自动化网页生成流程
1.创建API key 访问官网DeepSeek ,点击API开放平台。 在开放平台界面左侧点击API keys,进入API keys管理界面,点击创建API key按钮创建API key,名称自定义。 2.下载并安装配置编辑器VSCode 官网Visual Studio Code - Code Editing…...
【DeepSeek】私有化本地部署图文(Win+Mac)
目录 一、DeepSeek本地部署【Windows】 1、安装Ollama 2、配置环境变量 3、下载模型 4、使用示例 a、直接访问 b、chatbox网页访问 二、DeepSeek本地部署【Mac】 1、安装Ollama 2、配置环境变量 3、下载模型 4、使用示例 5、删除已下载的模型 三、DeepSeek其他 …...
vscode预览插件
在左侧列表拓展里搜索 Live Preview 安装,然后在html页面点击右键找到show Preview 结果如下图 然后就可以进行代码开发并实时预览了...