1、strlen,sizeof
strlen,sizeof都可以对字符串长度进行计算
char test[]= “hello” 这种双引号字符串后面默认是有个 空字符
sizeof (test) 为6
strlen (test) 为5
sizeof:可用于任何变量名、类型名或常量值,当用于变量名(不是数组名)或常量时,不需要加括弧。
strlen:从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结知束符''为止,然后返回计数器值。
sizeof 可以用类型做参数,strlen 只能用 char* 做参数,且必须是以 结尾的。数组做sizeo的参数不退化,传递给strlen就退化为指针了。
sizeof是在编译的时候生效的,strlen是函数,在运行时生效。
2、scanf
scanf是从标准输入设备获取数据。以串口为例,使用串口助手发送数据的话,需要勾选发送新行。
scanf在读取输入的时候,分为多种情况:
一、读取字符串的时候(%s)
scanf会读取除了空白字符以外的所有字符,并在读取到第一个空白字符时结束读取,将空白字符之后的所有字符都暂存在缓冲区中。除非缓冲区被刷新或者字符被读取走,否则将一直停留在缓冲区中。对%s来说,回车和空格都是当前函数的结束字符
二、读取字符的时候(%c )
scanf会读取所有字符包括空白字符。但是他会在读取到第一个空白字符后结束读取。将空白字符之后的所有字符都暂存在缓冲区中。
三、读取除了字符和字符串以外的所有输入的时候
scanf函数每次读取一个字符,跳过所有的空白字符,直到遇到第一个非空白字符的时候才开始读取。
scanf是一个阻塞函数,如果没有获取到数据,就会一直等待这个要注意。