社区
新手乐园
帖子详情
急!!!!strlen函数问题
豆包啊啊
2008-12-16 08:50:26
char a[100];
cout << strlen(a) << endl;
输出结果是:
100
103
char a[10];
cout << strlen(a) << endl;
输出结果是:
10
15
为什么一个是103,一个是15啊?而且把10换成11,12,输出结果也都是15。谁能告诉我为什么?
...全文
86
18
打赏
收藏
急!!!!strlen函数问题
char a[100]; cout << strlen(a) << endl; 输出结果是: 100 103 char a[10]; cout << strlen(a) << endl; 输出结果是: 10 15 为什么一个是103,一个是15啊?而且把10换成11,12,输出结果也都是15。谁能告诉我为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nullah
2008-12-16
打赏
举报
回复
[Quote=引用 9 楼 ztz0223 的回复:]
strlen不能用在刚定义的字符串数组上面的,因为strlen要找'\0',而你刚定义的里面没有这个字符,或许有
因此得到的是随机的一个数字
[/Quote]
up 正解
bluejing0
2008-12-16
打赏
举报
回复
楼上已解答,乱UP
whsfer
2008-12-16
打赏
举报
回复
是不是成员对齐的问题呢?
lbh2001
2008-12-16
打赏
举报
回复
[Quote=引用 13 楼 fjqgx 的回复:]
我主要是想知道为什么a[10],a[11],a[12],strlen(a)结果都是15,就是因为遇到\0才停,所以长度不确定,对吧?
[/Quote]
怀疑你认真看回复没有,
局部数组不初始化,里面的值是随机的,你那知道它在什么位置上是'\0',有可能在第二个位置,也有可能在其长度范围外的什么位置
在你的机器上结果是15,在别的机器上结果可能是其他值,因为不初始化'\0'的位置是随机值
GreaterHeat
2008-12-16
打赏
举报
回复
初次见到这样用strlen()的.
建议所有的变量都首先初始化候再使用.
变量定义之后马上就赋值的是另外一种用法.
豆包啊啊
2008-12-16
打赏
举报
回复
我主要是想知道为什么a[10],a[11],a[12],strlen(a)结果都是15,就是因为遇到\0才停,所以长度不确定,对吧?
长安宁
2008-12-16
打赏
举报
回复
你要知道,strlen的时候,只有遇到\0才会停,所以结果...
lbh2001
2008-12-16
打赏
举报
回复
[Quote=引用 10 楼 fjqgx 的回复:]
问题就是不初始化,初始化以后我就能弄明白了。
[/Quote]
如果是全局的数组,你不初始化是没有问题的,因为编译器会帮你初始化
但如果是局部数组,你不初始化,数组内的值是随机的,而strlen是依靠'\0'为结束符计算的
结果你应该明白了吧
豆包啊啊
2008-12-16
打赏
举报
回复
问题就是不初始化,初始化以后我就能弄明白了。
就呆在云上
2008-12-16
打赏
举报
回复
strlen不能用在刚定义的字符串数组上面的,因为strlen要找'\0',而你刚定义的里面没有这个字符,或许有
因此得到的是随机的一个数字
豆包啊啊
2008-12-16
打赏
举报
回复
我知道sizeof怎么用,就是问strlen的用法。
bxhzct
2008-12-16
打赏
举报
回复
sizeof();
gql1123
2008-12-16
打赏
举报
回复
数组a没赋值,也没初始化,输出长度不确定。
android2008
2008-12-16
打赏
举报
回复
友情up
qap22
2008-12-16
打赏
举报
回复
友情up
lbh2001
2008-12-16
打赏
举报
回复
[Quote=引用楼主 fjqgx 的帖子:]
char a[100];
cout < < strlen(a) < < endl;
输出结果是:
100
103
char a[10];
cout < < strlen(a) < < endl;
输出结果是:
10
15
为什么一个是103,一个是15啊?而且把10换成11,12,输出结果也都是15。谁能告诉我为什么?
[/Quote]
兄弟,你先将字符数组初始化先,在计算其中的字符串长度
如
char a[100] = "asfsa";
cout << strlen(a) << endl;
如果你要输出数组长度,就要使用
cout << sizeof(a) << endl; //不是用strlen
android2008
2008-12-16
打赏
举报
回复
友情up
qap22
2008-12-16
打赏
举报
回复
友情up
《C语言基础》 之 第9章 字符串
课程内容:字符数组1、字符串越位的
问题
、指针变量的空间大小、字符串常量、字符串传参、printf格式化输出字符串、字符串的非格式化输出
函数
、字符串输入
函数
、
strlen
函数
、strcpy
函数
和strncpy
函数
、strcmp
函数
和...
【C库
函数
】
strlen
函数
详解
目录
strlen
函数
基本原型 参数解读 返回值详解
函数
用法详解
strlen
获得字符串的长度(string length)
函数
基本原型 size_t
strlen
( const char *string ); 参数解读 参数 string 解释 要获取字符串长度的地址 返回值详解 返回的是size_t类型的值,size_t是无符号整数,这里要注意如果用返回值进行减法运算的话可能会出错 以下列代码为...
看到了这篇文章,不怕你学不会字符串
函数
!!!!!
关于字符串
函数
的万字讲解,绝对细致,绝对经典,快快来看,至少帮助你减少两个半月的弯路!!!
急
! php写的加密
函数
如何用java解密
$key = "This is supposed to be a secret key !!!"; function keyED($txt,$encrypt_key) { $encrypt_key = md5($encrypt_key); $ctr=0; $tmp = ""; for ($i=0;$i{ if ($ctr==
strlen
($encrypt_key)) $ctr=0; $tmp
java加密php解密算法_
急
! php写的加密
函数
如何用java解密
$key = "This is supposed to be a secret key !!!";function keyED($txt,$encrypt_key){$encrypt_key = md5($encrypt_key);$ctr=0;$tmp = "";for ($i=0;$i{if ($ctr==
strlen
($encrypt_key)) $ctr=0;$tmp.= substr($...
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章