173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

stm32获取字符串长度

keros@mark 2023-03-18 资讯中心

初学STM32,菜鸟求助输入输出字符串问题

#include stdio.h

// 计算字符串str长度,并返回

int lenstr(const char* str)

{

int i = -1;

while (str[++i]); // while循环在 str[++i] 为 '\0' 时结束

return i;

}

int main()

{

char p[1000];

printf("input a string:");

gets(p);

printf("string len: %d\n", lenstr(p));

return 0;

}

获取字符串长度的几个常用方法

字符串的长度可以使用 strlen 函数进行计算。

下面看输出结果

这里要注意:strlen()函数求出的字符串长度为有效长度,即不包含字符串末尾结束符 ‘\0’ ,因而返回的结果是第一个'\0'前字符元素的个数。

字符串的长度还可以使用 sizeof() 进行计算。

有的人可能这么做

看输出结果

其实这么写是错误的,这里输出的不是字符串的长度,而是指针变量占有空间的大小。32位操作系统对应4字节,所以结果是4,64位系统对应8字节,返回的结果就是8。

接着看下面这个例子

下面看输出结果

所以,这里要注意:

可以自定义函数进行字符串长度的计算。

这里还要注意:

关于STM32串口通信时数据读取的一些疑问

1、是的。芯片硬件自己完成。

2、是的。是的,USART硬件会根据你的设置(波特率等),将数据一位一位发出去。

3、

DR读取后就会清零RXEN。

4、是的,只能读一个字符,因为数据接收寄存器只有一个。不能。只能一个一个接收的,硬件决定了,如果你不读,下一个数据会覆盖上一个数据。

5、硬件上没有,偏要说有的话就是数据寄存器。

本文标签:stm32获取字符串长度

产品列表
产品封装
友情链接