前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >strlen,sizeof,scanf对字符串计算

strlen,sizeof,scanf对字符串计算

作者头像
用户9736681
发布2024-04-17 15:36:11
720
发布2024-04-17 15:36:11
举报
文章被收录于专栏:嵌入式随笔嵌入式随笔

1 strlen,sizeof

strlen,sizeof都可以对字符串长度进行计算

char test[]= “hello” 这种双引号字符串后面默认是有个 空字符\0

sizeof (test) 为6

strlen (test) 为5

sizeof:可用于任何变量名、类型名或常量值,当用于变量名(不是数组名)或常量时,不需要加括弧。

strlen:从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结知束符'\0'为止,然后返回计数器值。

sizeof 可以用类型做参数,strlen 只能用 char* 做参数,且必须是以 \0 结尾的。数组做sizeo的参数不退化,传递给strlen就退化为指针了。

sizeof是在编译的时候生效的,strlen是函数,在运行时生效。

2 scanf

scanf是从标准输入设备获取数据。以串口为例,使用串口助手发送数据的话,需要勾选发送新行。

scanf在读取输入的时候,分为多种情况:

一、读取字符串的时候(%s)

scanf会读取除了空白字符以外的所有字符,并在读取到第一个空白字符时结束读取,将空白字符之后的所有字符都暂存在缓冲区中。除非缓冲区被刷新或者字符被读取走,否则将一直停留在缓冲区中。对%s来说,回车和空格都是当前函数的结束字符

二、读取字符的时候(%c )

scanf会读取所有字符包括空白字符。但是他会在读取到第一个空白字符后结束读取。将空白字符之后的所有字符都暂存在缓冲区中。

三、读取除了字符和字符串以外的所有输入的时候

scanf函数每次读取一个字符,跳过所有的空白字符,直到遇到第一个非空白字符的时候才开始读取。

scanf是一个阻塞函数,如果没有获取到数据,就会一直等待这个要注意。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 strlen,sizeof
  • 2 scanf
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档