strlen函数原理
原理为while(*s++!=’\0’) cnt++;
首先需要了解一些基础知识:
1.数组内的存储形式为对应元素的ASCII码
2.\0代表无字符 ,注意无字符并不是数字0也不是空格
‘\0’ 单引号即代表了\0的ASCII码,而\0的ASCII码刚好为0
{
容易混淆的几个:
\0的ASCII码:0
空格的ASCII码:32
0的ASCII码:48
}
也就是说 也就是说strlen函数在遇到\0时就停止计数(即遇到ASCII码为0时),由于存储形式为ASCII码,0的ASCII码为48,所以遇到数字0时不停止计数。但是:如果我们使用了让字符变成数字的操作,这个时候就非常容易出现问题。比如 : 在100011中 , b[1]=0, 我们让 b[1] - ‘0’,让它可以表示数字。本来b[1]的存储形式为0的ASCII码,相减之后变为0,此时ASCII码被我们的操作变成了0,即无字符的状态,所以strlen函数在此停止,就会出现问题。
出现问题的代码:
#include<stdio.h>
#include<string.h>
int main(void)
{char ch[505];int sum=0;memset(ch,0,505);scanf("%s",ch);//int j=strlen(ch);for(int i=0,j=1;i<strlen(ch);i++,j++){ch[i]-='0';sum+=ch[i];printf("%d strlen(ch)=%d\n",j,strlen(ch));}//printf("%d\n",sum);return 0;
}
相应的结果:
按照预期,循环应该在i>=strlen(ch)时结束,但是我们的操作使得strlen(ch)发生变化,所以循环提前结束,导致错误发生。解决方法一般为在循环外设置变量int j=strlen(ch);
strlen函数原理相关推荐
- strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数
strcpy函数: char *strcpy(char *Dest , const char *Src) { assert((Dest != NULL) && (Src != NULL ...
- C和汇编---sizeof运算符和strlen函数
sizeof sizeof是C语言的内置运算符,以字节为单位给出指定类型的大小. 程序: #include <stdio.h>int main(void) {int a=8;int b = ...
- C语言 strlen函数实现
用字符串时strlen()函数是用到最多的函数之一,其作用获取是获取字符串的长度. 函数定义如下: size_t strlen(const char *s); 代码实现如下: size_t Test_ ...
- 【C库函数】strlen函数详解
目录 strlen 函数基本原型 参数解读 返回值详解 函数用法详解 strlen 获得字符串的长度(string length) 函数基本原型 size_t strlen( const cha ...
- 切割字符串长度php,C++_C语言中计算字符串长度与分割字符串的方法,C语言strlen()函数:返回字符串 - phpStudy...
C语言中计算字符串长度与分割字符串的方法 C语言strlen()函数:返回字符串的长度头文件: #include strlen()函数用来计算字符串的长度,其原型为: unsigned int str ...
- C语言 strlen(int),C语言 - strlen函数及int,char转换问题
题目 intmain() { inti; chara[1000]; for(i=0;i<256;i++) a[i]=i+1; printf("len = %d\n",strl ...
- C语言strlen函数的模拟实现
目录 使用计数方法实现strlen函数的模拟实现 使用递归的方式去实现 使用指针的方式去模拟实现strlen 使用计数方法实现strlen函数的模拟实现 在这里有一个assert函数这是断言,防止空指 ...
- 字符与字符串中的‘\0‘, ‘0‘, 0;strlen()函数求字符串长度计算方法(sizeof()验证)
先问一个问题:如下字符串or字符数组,用strlen函数求长度各是多少? /*01*/char * str1 = "abc"; /*02*/char * str2 = " ...
- php回调函数原理和实例
php回调函数原理和实例 原理 自己调用自己 称之为"递归",而不是回调 你也知道回调的关键是这个回 既然是回,那么就有一个谁是主体的问题,因为回调是往回调用的意思 我调用了函数A ...
- PHP strlen()函数和strpos()函数
strlen() 函数返回字符串的长度(字符数) 代码: <?php echo strlen("Hello world!"); ?> 上面的代码将输出:12 strp ...
最新文章
- 2021年4月28日 深圳头条后台开发实习面试(hr面)
- 程序、进程、线程的关系
- Log4j输出格式控制
- 【已解决】Linux远程桌面连接-VNC
- 实例1:python
- mysql binlog mixed_MySQL Binlog三种格式介绍及分析
- io读取一个文件再写入socket技术_Kafka必须掌握的核心技术--为什么吞吐量大、速度快?...
- win11安装软件没反应怎么办 Windows11安装软件没反应的解决方法
- Java整人程序-电脑关机
- Invalid or unexpected token 报错
- python np float_Python astype(np.float)函数使用方法解析
- 微信跳跳代码php执行,微信跳一跳,能够直接运行的脚本
- xfce-因为面板在 kiosk 模式下运行,所以不允许作为普通用户的您更改面板配置
- 安装Linux虚拟机
- 提供在Linux上运行最新版腾讯QQ与TIM的解决方案 Easiest Way to Run QQTIM on Linux
- 办公室 VR 黄片,骚操作!微软 HoloLens 之父辞职!
- prometheus remote write for springboot 远程写入<一>
- element Carousel 走马灯 一次轮播3张图片(整理)
- 使用二进制包在生产环境部署 Kubernetes v1.13.2 集群
- Euraka-看这就够了