Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >strlen,sizeof,scanf对字符串计算

strlen,sizeof,scanf对字符串计算

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

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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
sizeof和strlen的区别
第一个例子:  char *ss="0123456789";    sizeof(ss)=4, ss是指向字符串常量的字符指针。    sizeof(*ss)=1, *ss是第一个字符。 第二个例子:   char ss[]="0123456789"; sizeof(ss)=11, ss是数组,计算到“\0”位置,因此是(10+1)。    sizeof(*ss)=1, *ss是第一个字符。 第三个例子:   char ss[100]="0123456789"; sizeof(ss)
猿人谷
2018/01/17
9900
字符数组输入输出---fputs,gets_s,puts,fputs
都是从标准输入设备中接收。 接收的字符串结束之后都会自动在字符串的末尾追加’\0’作为字符串结束符。
大忽悠爱学习
2021/03/02
7510
字符数组输入输出---fputs,gets_s,puts,fputs
Redis | 源码阅读 —— 字符串
使用过 Redis 的都知道 Redis 用的最多的可能是它的 Key/Value 的缓存,在 Redis 用作 Key/Value 的缓存时,Value 有若干种数据类型,分别是 String、List、Set、Sorted Set 和 Hash。不同的 Value 类型对应了不同的数据结构,我们分别来了解一下 Redis 各种 Value 类型的数据结构。
码农UP2U
2020/09/11
6680
Redis | 源码阅读 —— 字符串
strlen和sizeof的差别
一、sizeof sizeof(…)是 运算符,而不是一个函数。 一个简单的样例: int a; cout<<sizeof a<<endl; 在头文件里typedef为unsigned int,其值在编译时即计算好了,參数能够是数组、指针、类型、对象、函数等。 它的功能是: 获得保证能容纳实现所建立的最大对象的字节大小。 因为在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。 实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系。 详细而言,当參数分别例如以下时,sizeof返回的值表示的含义例如以下: 数组——编译时分配的数组空间大小; 指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4); 类型——该类型所占的空间大小; 对象——对象的实际占用空间大小; 函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。 *****************
全栈程序员站长
2022/07/13
6390
5. 很“迷”的字符与字符串
最近一直在为自己的浏览量而担忧啦,都快被厂长大人约谈了……我真的有尽力在写稿子哦,所以也请各位老铁,如果觉得我的文章还不错就转发到朋友圈或者微信群之类的,让更多人的和我们一起学C语言。
谭庆波
2018/10/18
1.3K0
5. 很“迷”的字符与字符串
C语言-文件操作这一篇足够
上篇博客中我们写了通讯录的实现,但会有一个问题困扰着我们,就是说当这个程序结束之后,信息便也就丢失了,没有进行保存,这也不是我们想要的一个结果,我们希望在程序执行结束之后,下次再执行时,用户信息仍然在里面,这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据 库等方式。今天呢,我们就通过这篇博客来介绍文件操作的内容,把数据存储到磁盘文件当中去。
HABuo
2024/11/19
1580
C语言-文件操作这一篇足够
sizeof与strlen的区别
charstr[20]=0123456789;int  a=strlen(str);/*C/C++
Java架构师必看
2021/03/22
8690
C++中strlen()和sizeof()的区别
sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。     它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。     由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系。     具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:     数组——编译时分配的数组空间大小;     指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);     类型——该类型所占的空间大小;     对象——对象的实际占用空间大小;     函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。
用户7886150
2021/02/16
1.2K0
C语言printf()/scanf()的转换说明和转换说明修饰符
printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。
CtrlX
2022/11/14
2.6K0
C语言printf()/scanf()的转换说明和转换说明修饰符
C++中的输入函数scanf使用方法详解
scanf函数是C和C++中常用的输入函数之一,可以从用户输入的标准输入流stdin中读取格式为指定类型的数据。其基本用法如下:
很酷的站长
2023/08/25
3.6K0
C++中的输入函数scanf使用方法详解
redis学习 - sds字符串
Redis 设计与实现:如果想要知道redis底层,这本书可以给予不少的帮助,非常推荐每一位学习redis的同学去翻一翻。
阿东
2021/08/16
3530
redis学习 - sds字符串
scanf()函数的用法和实践
 scanf()函数的用法和实践摘要:本文阐述了基于ANSI,Win95,WinNT上的C/CC/C++
Java架构师必看
2021/03/22
9150
C语言常用字符串操作函数整理(详细全面)
功能:   从标准输入读入字符,并保存到s指定的内存空间,直到出现换行符或读到文件结尾为止 参数:   s:字符串首地址 返回值:   成功:读入的字符串   失败:NULL
嵌入式与Linux那些事
2021/05/20
4.2K0
【C语言】scanf 详细介绍
在上一节课中我们学习了变量,有了变量我们就需要给变量输入值,就需要用到 scanf 函数 ,如果需要将变量的值输出在屏幕上就用到 printf函数 ,上代码:
云边有个稻草人
2024/10/21
7360
【C语言】scanf 详细介绍
sizeof,sizeof与strlen的区别
sizeof是一个关键词也是操作符,专门用来计算类型或者变量大小,其实sizeof也可以计算数组的大小,单位都是字节。sizeof是一个非常有用的工具:
用户11328191
2024/10/23
2340
sizeof,sizeof与strlen的区别
C语言 getchar()原理及易错点解析
这个问题转载自n_s_X14,但是作者在文章最后留了一个问题,现在在这里给大家解释一下原因。
全栈程序员站长
2022/11/02
1.7K0
C语言 getchar()原理及易错点解析
printf 和scanf 介绍-学习笔记
嘿,相信大家肯定对这两个函数不陌生吧!每次写代码都会用到它们。今天,就让我们来揭开它们神秘的面纱,看看它们到底有多厉害!
LonlyMay
2024/10/21
5350
printf 和scanf 介绍-学习笔记
最通俗易懂地讲解scanf、gets和getchar的区别
文章首发于本人CSDN账号:https://blog.csdn.net/tefuirnever
我是管小亮
2020/04/20
6.9K0
第八节(字符和字符串)
字符串是任意的字符序列。字符串用于储存由字母、数字、标点符号或其他符号组成的文本数据。
冷影玺
2023/10/12
5490
第八节(字符和字符串)
printf 和 scanf 并没有这么简单
printf 函数我们在前几篇文章已经浅显的了解过,在本文中我们来全面的探讨一下它的具体用法和作用。printf()的作用是将参数文本输出到屏幕。它名字里面的 f 代表 format(格式化),代表可以定制输出文本的格式。
_小羊_
2024/10/16
2980
printf 和 scanf 并没有这么简单
相关推荐
sizeof和strlen的区别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档