社区
C语言
帖子详情
请看这个关于strlen函数的问题
zhangbencheng
2012-10-28 04:13:30
#include<stdio.h>
void main()
{
printf("%d\n",strlen("ATS\n012\1\\"));
}
他的结果为9,为什么啊!????
...全文
295
10
打赏
收藏
请看这个关于strlen函数的问题
#include void main() { printf("%d\n",strlen("ATS\n012\1\\")); } 他的结果为9,为什么啊!????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
一鸣惊人
2012-10-29
打赏
举报
回复
strlen 是计算字符串的长度 当人不算\0了
挣扎中前行
2012-10-28
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
ATS : 3
\n : 1
012: 3
\1: 1
\\: 1
3 + 1 + 3 + 1 + 1 = 9
其中\n, \1, \\各代表一个转义字符.
[/Quote]
++
newtee
2012-10-28
打赏
举报
回复
基础不扎实 建议把书本好好看看
疯狂的茶杯盖
2012-10-28
打赏
举报
回复
sizeof就要算\0了。strlen是字符个数计数,sizeof是存储空间计数。[Quote=引用 2 楼 的回复:]
转义字符:\n,\1(代表ASCII码为1的控制字符,即"标题开始"字符),\\(代表一个反斜杠字符‘\’)表示一个字符
[/Quote]
lihaicg
2012-10-28
打赏
举报
回复
用strlen的时候是遇到\0就结束了,\0是不算的。
size_t __cdecl strlen (
const char * str
)
{
const char *eos = str;
while( *eos++ ) ;
return( eos - str - 1 );
}
上面是strlen的实现的代码。看一下就知道了。
lxmuyu
2012-10-28
打赏
举报
回复
不算哪[Quote=引用 3 楼 的回复:]
想加个问题,'\0'不算吗?
[/Quote]
lihaicg
2012-10-28
打赏
举报
回复
因为'\1' 被查看成是一个八进制的1,所以总共就是9个字符。在转义中\xxx表示一个八进制的数,但是在后面不足三位的情况下,默认高位为0.
yingzijuntuan
2012-10-28
打赏
举报
回复
想加个问题,'\0'不算吗?
cooloyty
2012-10-28
打赏
举报
回复
转义字符:\n,\1(代表ASCII码为1的控制字符,即"标题开始"字符),\\(代表一个反斜杠字符‘\’)表示一个字符
JiMoKuangXiangQu
2012-10-28
打赏
举报
回复
ATS : 3
\n : 1
012: 3
\1: 1
\\: 1
3 + 1 + 3 + 1 + 1 = 9
其中\n, \1, \\各代表一个转义字符.
strlen
函数
详解
本文详细介绍了C语言中的
strlen
函数
,包括其
函数
原型、注意事项和自定义实现。强调了
strlen
不会计算字符串末尾的'
Strlen
函数
详解
本文深入讲解
strlen
函数
的原理,包括其
函数
原型、返回值类型、使用注意事项及三种模拟实现方法:计数器方法、递归方法和指针相减方法。强调字符串必须以
【C语言】
strlen
()
函数
本文详细介绍了C语言中的
strlen
()
函数
,包括其功能、使用方法和注意事项,并提供了三种不同的实现方式:计数器、递归和指针减指针。强调了使用
strlen
()时字符串必须以'
【安全
函数
】从
strlen
到
strlen
_s:C 语言字符串长度计算的安全进化
本文介绍C11标准引入的
strlen
_s
函数
,如何通过边界检查和错误处理机制提升字符串长度计算的安全性。相比传统的
strlen
,
strlen
_s有效防范空指针、缺失终止符导致的内存越界
问题
,适用于用户输入处理、动态内存操作等高安全需求场景。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章