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

【C语言常用字符串解析】

总结一下在 C 语言中用于字符串解析(特别是从文件中读取行并提取数据)的常用函数、

核心任务: 通常是从文件中读取一行文本(一个字符串),然后从这个字符串中提取出需要的数据(比如数字、单词等)。

常用函数总结:

  1. fgets() - 读取行

    • 头文件: <stdio.h>

    • 原型: char *fgets(char *str, int n, FILE *stream);

    • 作用: 从指定的文件流 stream 中读取一行,并将其存储到 str 指向的字符数组中。

    • 行为:

      • 最多读取 n-1 个字符(为末尾的空字符 \0 留出空间)。

      • 在读到换行符 \n、文件结束符 (EOF) 或达到 n-1 个字符时停止。

      • 如果读到了换行符 \n,它会被存储在字符串 str 中。

      • 总会在读取的字符后面添加一个空字符 \0。

      • 安全: 防止缓冲区溢出,因为读取的字符数有上限。

    • 返回值: 成功时返回 str 指针;如果遇到文件结尾且未读取任何字符,或者发生错误,则返回 NULL。——不需要额外接受值等于,会返回在str里面

    • 解析相关: 获取需要解析的原始字符串行的主要方式。 注意: 通常需要手动去除末尾可能存在的换行符 \n。

      char buffer[256];
      if (fgets(buffer, sizeof(buffer), fp) != NULL) {// 移除可能的换行符buffer[strcspn(buffer, "\n")] = '\0'; // 查找第一个换行符并替换为\0// 现在 buffer 包含了一行没有换行符的文本,可以进行解析
      }
    • strcspn() (来自 <string.h>) 在这里用来查找第一个换行符的位置。

  2. strlen() - 获取字符串长度

    • 头文件: <string.h>

    • 原型: size_t strlen(const char *str); (size_t 通常是 unsigned int 或 unsigned long)

    • 作用: 计算字符串 str 的长度,即第一个空字符 \0 之前的字符数。

    • 行为: 不包括结尾的 \0。

    • 返回值: 字符串的长度。

    • 解析相关: 虽然不直接解析内容,但在处理字符串(如检查是否为空、设置循环边界等)时非常有用。

  3. atoi() - 字符串转整数 (ASCII to Integer)

    • 头文件: <stdlib.h>

    • 原型: int atoi(const char *str);

    • 作用: 将表示整数的字符串 str 转换为 int 类型。

    • 行为:

      • 跳过开头的空白字符(如空格、制表符)。

      • 读取连续的数字字符,直到遇到非数字字符或字符串末尾 \0。

      • 不进行错误检查! 如果字符串不是有效的整数表示(例如是空的、"abc"、或者超出 int 范围),行为是:

        • 无法转换或为空:通常返回 0。你无法区分输入是 "0" 还是无效输入。

        • 超出范围:行为未定义(可能溢出并得到错误结果)。

    • 返回值: 转换后的 int 值,或者在无法转换时返回 0。

    • 解析相关: 用于从字符串片段中提取整数。仅适用于简单情况且不关心错误处理时。

  4. atof() - 字符串转双精度浮点数 (ASCII to Float)

    • 头文件: <stdlib.h>

    • 原型: double atof(const char *str);

    • 作用: 将表示浮点数的字符串 str 转换为 double 类型。

    • 行为:

      • 类似 atoi,跳过空白,读取数字、小数点、可选的 e 或 E 指数部分。

      • 同样不进行错误检查!

        • 无法转换或为空:通常返回 0.0。你无法区分输入是 "0.0" 还是无效输入。

        • 超出范围:行为未定义。

    • 返回值: 转换后的 double 值,或者在无法转换时返回 0.0。

    • 解析相关: 用于从字符串片段中提取浮点数。仅适用于简单情况且不关心错误处理时。

  5. strtod() - 字符串转双精度浮点数 (更健壮)

    • 头文件: <stdlib.h>

    • 原型: double strtod(const char *nptr, char **endptr);

    • 作用: 将字符串 nptr 的初始部分转换为 double 值。

    • 行为:

      • 比 atof 更强大、更安全。

      • endptr 是一个二级指针。如果它不是 NULL,strtod 会将指向转换结束后的第一个字符的指针存储在 *endptr 中。这允许你:

        • 检查是否发生了转换(如果 *endptr == nptr,则没有字符被转换)。

        • 继续从 *endptr 开始解析字符串的剩余部分。

      • 进行错误检查:

        • 如果发生上溢,返回 HUGE_VAL(或 -HUGE_VAL),并将全局变量 errno 设置为 ERANGE(需要 #include <errno.h> 和 #include <math.h>)。

        • 如果发生下溢,返回 0.0,并将 errno 设置为 ERANGE。

        • 如果无法转换,返回 0.0,并且 *endptr 会等于 nptr。

    • 返回值: 转换后的 double 值。

    • 解析相关: 强烈推荐使用此函数代替 atof 来进行字符串到 double 的转换,因为它提供了错误检测和更精细的控制。类似地,还有 strtof() (转 float) 和 strtold() (转 long double),以及 strtol() / strtoul() (转 long/unsigned long,代替 atoi)。

      char *line = "3.14 1.59 rest";
      char *end;
      double val1, val2;
      errno = 0; // 清除 errnoval1 = strtod(line, &end);
      if (errno == ERANGE || line == end) { /* 处理错误 */ }
      printf("First value: %f, Remaining string: '%s'\n", val1, end);// 继续解析 end 指向的剩余部分
      line = end; // 更新 line 指针
      errno = 0;
      val2 = strtod(line, &end);if (errno == ERANGE || line == end) { /* 处理错误 */ }
      printf("Second value: %f, Remaining string: '%s'\n", val2, end);
  6. strtok() - 分割字符串 (Tokenize)

    • 头文件: <string.h>

    • 原型: char *strtok(char *str, const char *delim);

    • 作用: 将字符串 str 分割成一系列的“令牌”(tokens),这些令牌由 delim 字符串中包含的任何一个字符分隔开。

    • 行为:

      • 会修改原始字符串 str! 它会在找到的分隔符位置写入 \0。因此,你通常需要一个可写的字符串副本。

      • 非可重入,非线程安全: 它使用一个内部静态指针来记住下次调用的位置。

      • 第一次调用: str 参数是要分割的字符串,函数返回第一个令牌的指针,如果没有令牌则返回 NULL。

      • 后续调用: str 参数必须是 NULL,函数会从上次停止的位置继续查找下一个令牌,返回令牌指针或 NULL。

    • 返回值: 指向下一个令牌的指针,或者在没有更多令牌时返回 NULL。

    • 解析相关: 用于按分隔符(如空格、逗号)拆分字符串。例如,拆分一行坐标 "x1 y1 x2 y2 ..."。

      char line[] = "10.0 20.5 30.0 15.0"; // 可写副本
      const char *delimiters = " "; // 按空格分割
      char *token;token = strtok(line, delimiters);
      while (token != NULL) {printf("Token: %s\n", token);// 在这里可以用 strtod() 将 token 转换为 doubledouble coord = strtod(token, NULL); // 简单用法,忽略错误检查printf("Coordinate: %f\n", coord);token = strtok(NULL, delimiters); // 获取下一个 token
      }
    • 注意: 因为它修改原字符串且非线程安全,有时会避免使用它,尤其是在复杂或多线程程序中。可以考虑使用 sscanf 或手动循环配合 strtod。

  7. sscanf() - 从字符串读取格式化输入

    • 头文件: <stdio.h>

    • 原型: int sscanf(const char *str, const char *format, ...);

    • 作用: 类似于 scanf,但是从字符串 str 而不是标准输入 stdin 读取数据。

    • 行为: 根据 format 字符串中的格式说明符,尝试从 str 中解析数据并存储到后续的参数(必须是指针)中。

    • 返回值: 成功赋值的参数个数。如果输入在第一次赋值前就结束或失败,返回 EOF。

    • 解析相关: 非常强大,可以一次性解析多个不同类型的值,只要它们的格式是预期的。

      char data[] = "Point 1 10.5 25.3";
      char label[10];
      int id;
      double x, y;int count = sscanf(data, "%s %d %lf %lf", label, &id, &x, &y);if (count == 4) {printf("Parsed: Label=%s, ID=%d, X=%.2f, Y=%.2f\n", label, id, x, y);
      } else {printf("Parsing failed or incomplete. Items matched: %d\n", count);
      }

    • 在循环中解析坐标序列: 可以结合 %n 实现。%n 不消耗输入,而是将在该点消耗的字符数写入其对应的 int* 参数。这可以帮助你移动解析的“光标”。

      char coords[] = "1.1 2.2 3.3 4.4 5.5 6.6";
      char *ptr = coords;
      int offset;
      double val;
      int items_read;while (sscanf(ptr, "%lf%n", &val, &offset) == 1) {printf("Read coordinate: %f\n", val);ptr += offset; // 移动指针到已解析部分的后面// 跳过可能的空格while (*ptr == ' ') {ptr++;}if (*ptr == '\0') break; // 到达字符串末尾
      }

如何选择?

  • 读取文件行: 始终使用 fgets。

  • 获取字符串长度: strlen。

  • 字符串转数字:

    • 优先使用 strtod, strtol, strtoul 因为它们提供错误检查和更好的控制。

    • atoi, atof 仅用于非常简单、不需错误处理的场景(或快速原型开发),生产代码中应避免。

  • 分割字符串:

    • strtok: 简单,但修改原串且非线程安全。适用于简单场景且拥有可写副本时。

    • sscanf: 适合格式相对固定的输入,可以一次性读取多个值。不修改原串。

    • 循环 + strtod: 最灵活、最健壮的方法,尤其当分隔符复杂或需要精细错误处理时。通过 strtod 的 endptr 可以精确控制解析位置。

例子:

多边形坐标解析任务(一行包含多个空格分隔的浮点数),以下两种方法比较常用:

  1. fgets + strtok + strtod:

    • fgets 读取行。

    • 创建行的可写副本。

    • 用 strtok 以空格为分隔符循环获取每个坐标字符串 (token)。

    • 在循环内用 strtod 将每个 token 转换为 double 并进行错误检查。

  2. fgets + 循环 + strtod:

    • fgets 读取行。

    • 使用一个指针 char *current_pos 指向当前解析位置(初始指向行首)。

    • 在循环中:

      • 调用 val = strtod(current_pos, &end_pos)。

      • 检查错误 (errno, current_pos == end_pos)。

      • 如果成功,存储 val。

      • 更新 current_pos = end_pos,让下一次循环从这里开始。

      • 如果 current_pos 指向 \0,结束循环。

相关文章:

【C语言常用字符串解析】

总结一下在 C 语言中用于字符串解析&#xff08;特别是从文件中读取行并提取数据&#xff09;的常用函数、 核心任务&#xff1a; 通常是从文件中读取一行文本&#xff08;一个字符串&#xff09;&#xff0c;然后从这个字符串中提取出需要的数据&#xff08;比如数字、单词等…...

基于深度学习农作物叶部病害实时检测系统研究(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

『MCP』初体验

『MCP』初体验 介绍 MCP 其实就是 Function Calling 的一个统一接口协议&#xff0c;网上介绍会有很多&#xff0c;所以这里不就重复介绍&#xff0c;这里主要是想记录说明一下 MCP 使用体验&#xff0c;可以帮助新人入门一下 安装 VSCode 以及 MCP client VSCode 自行安装…...

前端面试宝典---webpack原理解析,并有简化版源码

前言 先看一下webpack打包后的bundle.js&#xff0c;前边的直接扫一眼就过&#xff0c;可以发现这个立即执行函数的形参就是一个&#xff0c;key为引入文件路径&#xff0c;value为该模块代码的函数。 所以比较重要的就是通过webpack的配置文件中的entry的入口文件&#xff0c…...

负载均衡深度实践:基于Nginx+Keepalived的高可用方案与Zabbix监控设计

目录 综合实践-部署负载均衡 1 环境准备 2 zabbix监控nginx和keeplive 2.1 nginx安装 2.2 安装keepalived 2.3 部署vue 2.4 安装agent 2.5 zabbix监控nginx配置 2.6 zabbix监控keeplived 3 zabbix监控jar 3.1 安装agent 3.2 安装jdk 3.3 部署jar包 3.4 配置web 4…...

深度学习基础--目标检测入门简介

博主简介&#xff1a;努力学习的22级本科生一枚 &#x1f31f;​ 博客主页&#xff1a;羊小猪~~-CSDN博客 内容简介&#xff1a;探索AI算法&#xff0c;C&#xff0c;go语言的世界&#xff1b;在迷茫中寻找光芒​&#x1f338;​ 往期回顾&#xff1a;yolov5基础–一步一步教…...

Redis ⑧-RESP | 渐进式遍历 | 数据库管理

Redis data-types 除了之前学习的 string、hash、list、set、Zset 五种数据结构之外&#xff0c;Redis 还提供了 bitmap、bitfield、 hyperloglog、geospatial、stream 等数据结构。 另外的一些数据结构&#xff0c;都是在某些特定环境下才会使用&#xff0c;使用频率不高&…...

【Android】四大组件之ContentProvider

目录 一、什么是 ContentProvider 二、创建和使用 ContentProvider 三、跨应用权限控制 四、数据变更通知 五、多表关联与视图 六、异步处理 你手机里的通讯录&#xff0c;存储了所有联系人的信息。如果你想把这些联系人信息分享给其他App&#xff0c;就可以通过ContentP…...

Qwen3 发布:优化编码与代理能力,强化 MCP 支持引领 AI 新潮流

人工智能领域的每一次重大突破都如同璀璨星辰&#xff0c;照亮了人类前行的道路。2025 年 4 月 29 日凌晨&#xff0c;阿里巴巴旗下的 Qwen 官方团队正式发布了最新一代大语言模型 ——Qwen3&#xff0c;犹如一颗重磅炸弹&#xff0c;在 AI 领域掀起了惊涛骇浪。此次发布&#…...

LEETERS题解

【题目描述】 给出一个rowcolrowcol的大写字母矩阵&#xff0c;一开始的位置为左上角&#xff0c;你可以向上下左右四个方向移动&#xff0c;并且不能移向曾经经过的字母。问最多可以经过几个字母。 【输入】 第一行&#xff0c;输入字母矩阵行数RR和列数SS&#xff0c;1≤R,S≤…...

图像加密算法概述

版本: 1.0 日期: 2025年5月1日 目录 引言 1.1 什么是图像加密?1.2 为什么需要图像加密?1.3 图像数据的特点与加密挑战加密基础概念 2.1 明文与密文2.2 加密与解密2.3 密钥2.4 对称加密与非对称加密为什么传统文本加密算法不完全适用于图像? 3.1 数据量巨大3.2 高度冗余性…...

loads、dumps、jsonpath使用场景

在处理JSON数据时&#xff0c;loads、dumps 和 jsonpath 是三个非常有用的工具或概念。它们各自在不同的场景下发挥作用&#xff0c;让我们一一来看&#xff1a; 1. loads loads 函数是 Python 中 json 模块的一部分&#xff0c;用于将 JSON 格式的字符串解析成 Python 的数据…...

Winform(7.序列化方式整理)

今天我又对序列化方式进行了整理,可以与上一篇序列化方式一起看 一.序列化方式(四种) 1.二进制序列化 //定义 Person 类,需要标记为可序列化 [Serializable] public class Person { public string Name{get;set;} public int Age{get;set;} } 在进行二进制序列化…...

通过AI的联网功能提升搜索检索能力

以百度ai搜索&#xff08;百度AI搜索 - 办公学习一站解决&#xff09;为例&#xff0c;ai会自动根据问题搜集现有互联网文章&#xff0c;避免人工通过传统检索引擎的结果逐个去查找&#xff0c;这种方式文章的相关性会更高。 tip&#xff1a;快速查看每篇文档&#xff0c;仅关…...

Spring IoC容器的设计与实现

Spring整体架构与模块划分 核心容器&#xff08;Core Container&#xff09; spring-core 基础工具类&#xff1a;如资源加载&#xff08;Resource接口&#xff09;、反射工具&#xff08;ReflectionUtils&#xff09;、类型转换&#xff08;ConversionService&#xff09;。…...

使用vue的插值表达式渲染变量,格式均正确,但无法渲染

如图&#xff0c;作者遇到的问题为&#xff0c;输入以下代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…...

数据库 AI 助手测评:Chat2DB、SQLFlow 等工具如何提升开发效率?

一、引言:数据库开发的 “效率革命” 正在发生 在某互联网金融公司的凌晨故障现场,资深 DBA 正满头大汗地排查一条执行超时的 SQL—— 该语句涉及 7 张核心业务表的复杂关联,因索引缺失导致全表扫描,最终引发交易系统阻塞。这类场景在传统数据库开发中屡见不鲜:据 Gartne…...

21.1Linux中的LCD驱动实验(知识)_csdn

1、LCD 和 LTDC 简介 1.1、LCD 简介 1.1.1、分辨率 1.1.2、像素格式 可以看到红、绿、蓝每个8位&#xff0c;还有一位是A7~A0就是透明通道&#xff0c;32位ARG8888。 1.1.3、LCD 屏幕接口 1.1.4、LCD 时间参数 如果将 LCD 显示一帧图像的过程想象成绘画&#xff0c;那么…...

Angular教程前言:历史、安装与用途

Angular 是一个强大且流行的开源前端 Web 应用程序框架&#xff0c;由 Google 开发并维护 1。它在现代 Web 开发中占据着重要的地位&#xff0c;尤其在构建动态、高效且可扩展的 Web 应用程序方面表现出色&#xff0c;特别适用于单页应用程序 (SPA) 和复杂的用户界面 1。本教程…...

node.js模块化步骤(各标准区别)CommonJS规范、AMD规范、UMD规范、ES Modules (ESM)

前后端建议统一使用ESM 文章目录 Node.js模块化发展历程与标准对比一、模块化的意义1.1 解决的核心问题1.2 没有模块化的问题 二、CommonJS规范2.1 核心特征2.2 实现示例 三、AMD (Asynchronous Module Definition)3.1 特点3.2 代码示例 四、UMD (Universal Module Definition)…...

Unity图片导入设置

&#x1f3c6; 个人愚见&#xff0c;没事写写笔记 &#x1f3c6;《博客内容》&#xff1a;Unity3D开发内容 &#x1f3c6;&#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f50e;Unity支持的图片格式 ☀️BMP:是Windows操作系统的标准图像文件格式&#xff0c;特点是…...

MySQL与分布式架构的碰撞

目录 一、分布式架构的核心挑战与MySQL的应对策略 1.1 高并发与扩展性 1.3 高可用与容灾 二、MySQL分布式架构的核心技术实现 2.1 读写分离与主从复制&#xff08;扩展&#xff09; 2.2 数据分片与分布式存储&#xff08;扩展&#xff09; 2.3 MySQL Cluster与NDB引擎&am…...

python-MySQL鏈接

python鏈接MySQL&#xff0c;主要利用庫 pip install mysql-connector-pythonimport mysql.connector# 配置连接参数 config {"user": "your_username","password": "your_password","host": "localhost", # 或…...

cv::remap() 和 cv::undistortion() 的区别

在 OpenCV 中&#xff0c;cv::remap 和 cv::undistort 都用于处理图像畸变校正&#xff0c;但它们的实现方式和应用场景有显著区别。以下是详细对比&#xff1a; 1. cv::undistort&#xff1a;直接畸变校正 功能 输入&#xff1a;原始畸变图像 相机内参矩阵 (cameraMatrix) …...

【AI提示词】决策树专家

提示说明 一位熟悉决策树算法的机器学习专家&#xff0c;擅长用树状图量化不同选择的结果概率。 提示词 # Role: 决策树专家## Profile - language: 中文 - description: 一位熟悉决策树算法的机器学习专家&#xff0c;擅长用树状图量化不同选择的结果概率 - background: 决…...

【中间件】bthread_数据结构_学习笔记

bthread数据结构 bthread_数据结构_学习笔记1 pthread_cond_t1.1 definition1.2 解释1.3 设计动机1.4 使用示例1.5 注意事项1.6 进一步延伸&#xff1a;pthread_cond_s 2 pthread_mutex_t bthread_数据结构_学习笔记 1 pthread_cond_t POSIX线程库 /usr/include/x86_64-linux…...

VM虚拟机安装CentOS7.9

目录 1.下载CentOS7.9 2.VM虚拟机选择自定义&#xff0c;然后一直傻瓜式下一步 3.选择编辑虚拟机设置&#xff0c;然后选择刚刚下载的ISO 4.输入 ip addr 获取ip地址 5.用Xshell连接 1.下载CentOS7.9 链接&#xff1a;https://pan.baidu.com/s/1kW2gGWnbcjNtq4kz46LKVw?p…...

C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 18)

&#x1f381;个人主页&#xff1a;工藤新一 &#x1f50d;系列专栏&#xff1a;C面向对象&#xff08;类和对象篇&#xff09; &#x1f31f;心中的天空之城&#xff0c;终会照亮我前方的路 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 文章目录 二…...

Cribl 数据脱敏 更多方法 MASK (三)

我做过好几个cribl 数据脱敏的实验: Cribl 脱敏mask-CSDN博客...

【笔记】深度学习模型训练的 GPU 内存优化之旅⑤:内存分配篇

开设此专题&#xff0c;目的一是梳理文献&#xff0c;目的二是分享知识。因为笔者读研期间的研究方向是单卡上的显存优化&#xff0c;所以最初思考的专题名称是“显存突围&#xff1a;深度学习模型训练的 GPU 内存优化之旅”&#xff0c;英文缩写是 “MLSys_GPU_Memory_Opt”。…...

【5G 架构】边缘计算平台是如何与3GPP网络连接的?

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…...

5.0.0 GripSpliter的使用(探讨水平竖直对齐参数)

布局控件Grid 配合 GridSplitter 无需编写任何代码 就能实现网格大小可拖动。 其HorizontalAlignment、VerticalAlignment属性的使用非常具有迷惑性;本文做了一些一些实验,总结为把这两个属性均设置为strech即可。 总结如下:经过实验,发现以下情况可以正常工作。 水平方向…...

python如何把pdf转word

在Python中将PDF转换为Word文档&#xff08;.docx&#xff09;比反向转换&#xff08;Word转PDF&#xff09;更具挑战性&#xff0c;因为PDF是固定格式&#xff0c;而Word是可编辑格式。以下是几种可行的方法及详细步骤&#xff1a; 方法1&#xff1a;使用 pdf2docx 库 pdf2do…...

go实现双向链表

需求 实现双向链表的节点生成、正反向遍历、指定删除。 实现 package mainimport ("fmt" )type zodiac_sign struct {number intdizhi stringanimal stringyear intprevious *zodiac_signnext *zodiac_sign }// 添加 // func add_node_by_order(pr…...

33、VS中提示“以下文件中的行尾不一致。是否将行尾标准化?“是什么意思?

在Visual Studio&#xff08;VS&#xff09;中遇到提示“以下文件中的行尾不一致。是否将行尾标准化&#xff1f;”时&#xff0c;意味着当前打开或正在编辑的文件内部存在行尾符&#xff08;EOL&#xff0c;End-Of-Line&#xff09;格式不统一的情况。以下是详细解释和应对建议…...

C 语言 第五章 指针(5)

目录 函数参数传递机制&#xff1a;地址传递 值传递 简单变量指针作为形参 举例1&#xff1a; 举例2&#xff1a; 举例3&#xff1a; 数组作为形参 举例&#xff1a; 函数参数传递机制&#xff1a;地址传递 值传递 void test(int a, int b) { a 10; b 20; print…...

Python项目源码69:Excel数据筛选器1.0(tkinter+sqlite3+pandas)

功能说明&#xff1a;以下是一个使用Tkinter和Pandas实现的完整示例&#xff0c;支持Excel数据读取、双表格展示和高级条件筛选功能&#xff1a; 1.文件操作&#xff1a;点击"打开文件"按钮选择Excel文件&#xff08;支持.xlsx和.xls格式&#xff09;&#xff0c;自…...

机器人--架构及设备

机器人的四大组成部分 控制系统 驱控系统 驱控驱动系统控制系统。 注意&#xff0c;这里的控制系统不是机器人层面的控制系统&#xff0c;属于更小层级的&#xff0c;驱控系统的控制系统。 驱动系统&#xff1a; 一般指硬件设备&#xff0c;比如电机驱动器&#xff0c;I/O…...

机器人--主机--控制系统

机器人主机 机器人主机&#xff0c;即控制系统。 作用 机器人主机的核心功能 传感器数据处理&#xff1a;处理摄像头、激光雷达、IMU等数据。 运行SLAM/导航算法&#xff1a;如Google Cartographer、RTAB-Map。 路径规划与控制&#xff1a;执行A*、DWA等算法。 通信管理&a…...

Stm32 烧录 Micropython

目录 前言 准备工作 开始操作 问题回顾 后记 前言 去年曾经尝试Pico制作openmv固件&#xff0c;由于知识储备不够最后失败了&#xff0c;留了一个大坑&#xff0c;有了前几天的基础&#xff0c;慢慢补齐知识&#xff0c;最近这一周一直在学习如何编译Stm固件并烧录到单片机…...

leetcode 977. Squares of a Sorted Array

题目描述 双指针法一 用right表示原数组中负数和非负数的分界线。 nums[0,right-1]的是负数&#xff0c;nums[right,nums.size()-1]是非负数。 然后用合并两个有序数组的方法。合并即可。 class Solution { public:vector<int> sortedSquares(vector<int>&…...

使用Nexus搭建远程maven仓库

1、Nexus介绍 Nexus 是 Sonatype 公司的一款用于搭建私服的产品&#xff0c;使用非常广泛。在早期&#xff0c;我们都拿Nexus当maven私服仓库&#xff0c;后来&#xff0c;随着版本不断更新&#xff0c;它支持的数据类型越来越多&#xff0c;比如npm仓库&#xff0c;nuget仓库&…...

坚鹏:工行《DEEPSEEK赋能银行智能办公及数字化营销服务》培训

中国工商银行上海市分行《DEEPSEEK赋能银行智能办公及数字化营销服务》培训圆满落幕 中国工商银行作为全球领先的综合性金融服务集团&#xff0c;始终走在金融科技创新的前沿。截至2024年末&#xff0c;工商银行总资产规模突破40万亿元&#xff0c;连续多年稳居全球银行榜首。在…...

操作系统OS是如何指挥外围设备的呢?

众所周知&#xff0c;OS的职责之一就是管理外围设备&#xff0c;比如常见的磁盘、硬盘、显示器、麦克风等&#xff0c;但并不是外围设备的一切都必须由OS管理&#xff0c;比如无线鼠标上的开关键&#xff0c;当你通过它关闭鼠标时&#xff0c;这个操作并不会经过OS&#xff0c;…...

实现Sentinel与Nacos的规则双向同步

实现Sentinel与Nacos的规则双向同步&#xff1a;完整解决方案 前言 在微服务架构中&#xff0c;流量控制和熔断降级是保障系统稳定性的重要手段。阿里开源的Sentinel作为一款轻量级的流量控制组件&#xff0c;常被用于实现这些功能。然而&#xff0c;在实际生产环境中&#x…...

2025五一杯数学建模A题:支路车流量推测问题,思路分析+模型代码

一持续更新&#xff0c;见文末名片 二、问题背景 想象一下&#xff0c;城市的道路如同一张巨大的脉络图&#xff0c;主路如同大动脉&#xff0c;配备着车流量监测设备&#xff0c;能实时记录车流量数据&#xff0c;就像我们身体的传感器一样。然而&#xff0c;当多条支路像毛细…...

Linux51 安装baidunetdisk yum install rpm -ivh

推测网卡 感觉是不是以前哪里设置了下 deepseek说的这个设置 我没有设置过 这个不会弄啊 准备用虚拟机安个软件 神奇 换了这个命令又能打开网卡了 参考了这个 参考 之前地址我觉得配置错误 动态分配 我就删掉ip地址了 路由表中无ip地址吗&#xff1f; OK 卸载 运…...

【Python-Day 8】从入门到精通:Python 条件判断 if-elif-else 语句全解析

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

若依 FastAPI + Vue3 项目 Docker 部署笔记( 启动器打包教程)

本文记录了将 start.bat 打包成 .exe 启动器的详细教程&#xff0c;适合项目交付或导师演示用。 &#x1f9ed; 一、如何将 start.bat 打包为启动器 .exe&#xff08;含图标 自动打开浏览器&#xff09; ✅ 1. 创建三大功能脚本 start.bat → 启动项目&#xff08;docke…...

Lebesgue测度和积分理论发展概观

1. 发展背景 积分可以从两个角度来理解。首先&#xff0c;积分是微分的逆函数&#xff0c;因此积分是反导数(译注&#xff1a;但积分是独立于微分的&#xff0c;不能微分的函数也可能可积)。然而&#xff0c;这是一个非常抽象的概念。其次&#xff0c;两点之间的积分可以看…...