自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(111)
  • 收藏
  • 关注

原创 C语言解析JSON字符串指南(含结构体、结构体数组+使用cJSON)

如何将JSON解析成值、结构体、结构体数组等

2025-03-31 11:21:10 2873

原创 strtoull函数使用详解

摘要:strtoull是C/C++标准库函数,用于将字符串转换为无符号长长整型(unsigned long long)。该函数原型包含三个参数:要转换的字符串、指向无效字符的指针和进制基数(2-36)。文章详细介绍了其基本用法、错误处理方式,以及如何利用endptr继续解析字符串。同时提供了配置文件解析、处理大数字输入等实际应用场景,并强调了前导空格处理、溢出检测、负号处理等注意事项。在C++中建议使用<cstdlib>头文件,并推荐进行严格的错误检查,特别是处理用户输入时。

2025-12-01 14:29:44 247

原创 freeRTOS系统中,执行一个4小时的单次定时任务

FreeRTOS实现4小时单次定时执行有三种主要方法:1.推荐使用xTimerCreate创建单次软件定时器,自动处理时间管理且可靠性高;2.通过vTaskDelay结合任务实现,适合简单场景;3.采用系统时钟计数方式,需手动处理计时检查。

2025-10-22 16:26:46 310

原创 strchr与strrchr函数使用

摘要:strrchr和strchr是C语言中用于字符串字符查找的函数。strrchr从后向前查找字符的最后一次出现位置,返回指向该位置的指针;strchr从前向后查找字符的第一次出现位置。两者原型相同,但搜索方向不同:strrchr为反向查找(reverse),strchr为正向查找。选择依据取决于需求,如提取文件名用strrchr找最后的分隔符,解析路径时用strchr找第一个分隔符。两个函数都需包含<string.h>头文件,未找到字符时返回NULL。

2025-10-15 10:47:36 495

原创 C语言strtol 函数使用方法

strtol 是 C 语言中用于字符串转长整型的函数,其原型为 long strtol(const char *str, char **endptr, int base)。

2025-09-05 15:28:49 931

原创 C语言中isdigit和isspace函数

C语言标准库函数isdigit()和isspace()详解

2025-08-22 16:17:01 648

原创 C语言限制字符串长度方法

输出时:用%.Ns或%.*s(动态长度)限制输出的字符数。输入时:用%Ns限制scanf读取的字符数,或直接用fgets。安全性:始终确保字符串操作不会导致缓冲区溢出。

2025-08-05 17:57:51 550

原创 BCD格式解析及C语言实现

BCD(Binary-Coded Decimal,二进制编码的十进制)是一种用二进制编码表示十进制数字的方法。下面我将详细解析BCD格式及其在C语言中的实现。

2025-07-31 11:30:19 592

原创 使用 strtok 函数在 C 语言中分割字符串

strtok是C语言中用于字符串分割的标准库函数,通过指定分隔符将字符串拆分为多个子串。它会修改原始字符串,在每个分隔符处插入'\0'。

2025-07-18 16:08:29 327

原创 strstr、strrchr、strchr 函数的区别

C语言标准库<string.h>中的三个字符串查找函数:1.strchr查找字符首次出现位置;2.strrchr查找字符最后一次出现位置;3.strstr查找子字符串首次出现位置。三者都区分大小写且要求字符串以'\0'结尾,区别在于搜索内容和方向:strchr和strrchr搜索单个字符(正向/反向),strstr搜索子字符串(正向)

2025-07-15 09:38:36 299

原创 串口字符串提取JSON并保存-问题记录

将串口收到的字符串中: CONNECT {"code":200,"msg":"Success","data":{"app":null,"sys":null,"mcu":{"url":"https://www.naxeontech.cn/pub/N1_TBOX_GD32F415_RTOS.bin","version":"1.1.1","size":91528,"mark":"N1测试","type":2}}} OK。

2025-07-10 10:04:37 287

原创 cJSON数组操作函数使用指南

摘要:cJSON库提供了数组处理函数cJSON_GetArraySize和cJSON_GetArrayItem。前者获取数组元素数量(非数组返回0),后者获取指定索引元素(索引越界返回NULL)。使用时需确保参数为有效数组对象,索引从0开始,注意内存释放和空指针检查。示例展示了如何解析JSON数组并遍历元素,包括处理嵌套数组的情况。典型应用场景包括解析配置文件、API响应等结构化数据。(150字)

2025-07-09 17:11:06 598

原创 合并Bootloader和应用程序HEX文件方法

使用 J-Flash 合并 Bootloader 和 Application 的 HEX 文件

2025-06-25 15:36:15 328

原创 http中GET和POST、PUT之间的区别

通过请求体(Body)传递,支持多种格式(如JSON、表单),长度无限制。POST用于创建(如新增用户),PUT用于更新(如替换用户全部信息)。:如需部分更新资源(非完整替换),应使用PATCH方法。:否(多次提交可能产生不同结果,如重复创建订单)。(查询数据),不应修改服务器状态。(替换整个资源,需提供所有字段)。:通过请求体传递(类似POST)。:安全(仅读取,不修改数据)。:是(多次执行结果相同)。:是(多次更新结果一致)。)传递,可见且长度受限。(创建资源或触发处理)。:不安全(会修改数据)。

2025-06-17 15:20:01 836

原创 C语言宏定义中的令牌粘贴运算符

C语言宏定义中的##运算符用于连接符号,如s_Buffer_##vname可将前缀与参数vname组合成新变量名(如s_Buffer_myBuf)。这种技巧能确保变量名唯一性,避免命名冲突,并表明变量间的关联关系。在静态缓冲区声明宏中,它动态生成与参数相关的数组名(如vname=myBuf生成s_Buffer_myBuf),是宏编程中创建唯一标识符的常用方法。

2025-06-17 14:26:23 294

原创 trnstr函数功能及头文件介绍

strnstr是一个用于在字符串中查找子字符串的函数,类似于strstr,但它限制了搜索的长度,提供了一定的安全性。

2025-06-17 11:43:24 369

原创 C语言十六进制转ASCII方法

将每两个十六进制字符组合成一个字节将这个字节转换为对应的ASCII字符:由于 ASCII 字符本身就是用 8 位二进制(或十六进制)表示的,可以直接将buf中的值作为 ASCII 码,转换为对应的字符。

2025-06-16 14:30:32 994

原创 Notepad++如何列选

Notepad++列模式操作指南:提供三种方法进行垂直文本选择:(1)Alt+鼠标拖动(2)Alt+Shift+方向键(3)菜单栏开启列模式。选中后支持复制、删除、修改等操作。

2025-06-12 15:40:45 2549

原创 FreeRTOS任务挂起与恢复

FreeRTOS中任务控制的核心操作:挂起(Suspend)和恢复(Resume)。通过vTaskSuspend()可暂停指定任务,而vTaskResume()能重启被挂起的任务。特别说明在中断服务程序(ISR)中须使用xTaskResumeFromISR()进行任务恢复。

2025-06-10 09:38:18 413

原创 C语言实现绝对值差值函数

在C语言中,可以编写一个函数来计算两个数的差值的绝对值。三种方法都能正确计算两个整数的差值的绝对值,你可以根据需要选择其中一种。方法2通过if-else语句手动计算绝对值。方法3使用条件运算符(三元运算符)简化代码。方法1使用了标准库中的。

2025-06-06 15:36:53 314

原创 JSON解析崩溃原因及解决方案

函数在多次解析相同的 JSON 字符串。

2025-06-06 14:35:43 651

原创 xTimerChangePeriod无需先Stop

直接调用即可,无需预先停止定时器。FreeRTOS 已处理好内部状态转换和线程安全问题。

2025-06-03 16:05:04 419

原创 十六进制数据转换为对应的字符串

十六进制数据转换为对应的字符串(例如 0x08 转换为 "08")

2025-05-28 16:28:36 764

原创 MDK开发中调试端口R13、R14、R15寄存器

R13(SP)、R14(LR)和R15(PC)是三个关键寄存器

2025-05-27 14:58:28 467

原创 C语言拼接4字节数据为uint32_t

将4个字节数据拼接成一个uint32_t可以使用位操作(位移和按位或)来实现。假设你有4个字节abcd(类型为uint8_t),你可以按照大端序(Big-Endian)或小端序(Little-Endian)的方式拼接。

2025-05-23 15:18:53 726

原创 memcpy 函数的使用 (C语言)

memcpy 是 C 语言标准库中的一个重要函数,用于在内存之间复制数据

2025-05-22 17:21:25 883

原创 串口DTR信号作用与应用解析

数据终端就绪)是RS-232标准中的一个控制信号,主要用于串行通信中表示设备的就绪状态。:RTS(Request to Send)用于请求发送数据,而DTR表示全局就绪状态。:与DCE设备的DSR(Data Set Ready)配合,实现双向就绪检查。:在USB转串口适配器中,DTR可能被映射为控制功能(如复位MCU)。:终端程序(如PuTTY)可手动控制DTR信号,或依赖它检测连接状态。:若设备未使用DTR但信号被激活,可能导致意外行为(如误复位)。(公头)/ Pin 6(母头,部分设备可能不同)。

2025-05-20 10:42:10 811

原创 C语言指针循环使用指南

在C语言中,指针的循环使用是一种常见技术,主要用于遍历数组、字符串、动态内存管理以及二维数组等数据结构。

2025-05-13 11:35:14 271

原创 C语言多指针内存管理优化

在C语言中,管理多个字符指针的内存分配和释放可以通过多种方式实现。

2025-05-13 11:25:57 411

原创 Keil 中遇到 “头文件已包含但结构体未定义” 的问题

头文件已包含但结构体未定义” 问题

2025-05-08 16:38:53 1581

原创 结构体内存对齐规则与优化

内存对齐是计算机系统中一种重要的内存管理机制,它要求数据在内存中的地址必须是某个值(通常是2、4、8等2的幂次方)的倍数。

2025-05-06 14:54:05 491

原创 C语言结构体内存对齐使用场景

#pragma pack(push, 1) 和 #pragma pack(pop)

2025-05-06 11:10:12 490

原创 C语言位域与结构体打包技术

位域和结构体打包技术可以有效地减少内存使用,特别适用于嵌入式系统或需要与硬件/网络协议交互的场景。但使用时需要注意潜在的性能影响和可移植性问题。

2025-05-06 10:33:36 476

原创 取某位bit值,并赋值给其他变量对应bit位

如果是简单的 bit 提取,如果要取出一个字节

2025-04-29 15:31:32 553

原创 C语言按位操作符

直接对整数的二进制位(bit)进行操作,常用于底层编程、硬件控制或性能优化场景。

2025-04-29 15:02:22 1168

原创 数字转成字符串

以下是用C语言编写的函数,将数字转成字符串。

2025-04-29 10:31:08 438

原创 C语言实现卡ID启用排序

根据bindflag的高七位比特位来对userCardId数组进行重新排序,使得启用的卡 ID 排在前面,禁用的卡 ID 排在后面,并更新。

2025-04-28 15:38:28 198

原创 C语言实现卡ID删除与排序

根据bindflag的高七位 bit 来管理userCardId数组中卡 ID 的启用/禁用状态删除指定的卡 ID 后,需要重新排序数组,将有效的卡 ID 移到数组前面更新为当前有效的卡数更新bindflag使其高七位 bit 与新排序后的卡 ID 状态对应。

2025-04-28 14:22:09 244

原创 循环与switch的嵌套使用

for循环和switch语句可以相互嵌套使用。在编程中,这种嵌套结构是完全合法的,并且在实际开发中经常使用。

2025-04-27 14:53:16 518

原创 memcpy 使用指南 (C语言)

memcpy是 C 语言标准库中的一个重要函数,用于在内存区域之间复制数据。它是<string.h>头文件中定义的高效内存操作函数之一。

2025-04-27 14:25:39 504

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除