#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。
接着看下面这个例子
下面看输出结果
所以,这里要注意:
可以自定义函数进行字符串长度的计算。
这里还要注意:
1、是的。芯片硬件自己完成。
2、是的。是的,USART硬件会根据你的设置(波特率等),将数据一位一位发出去。
3、
DR读取后就会清零RXEN。
4、是的,只能读一个字符,因为数据接收寄存器只有一个。不能。只能一个一个接收的,硬件决定了,如果你不读,下一个数据会覆盖上一个数据。
5、硬件上没有,偏要说有的话就是数据寄存器。
本文标签:stm32获取字符串长度