社区
C语言
帖子详情
关于strlen这个函数的问题
zyhserry
2010-06-16 04:40:09
char array[30];
printf("strlen(array) = %d\n", strlen(array));
就这两句代码,打印出来的长度是64,我定义的是30啊,不解!
于是我重新定义char array[64];
结果打印出来是96
我重新定义成char array[32];
结果打印出来是64
什么原因啊????
我身上没分,只能散那么多了+_||
...全文
109
7
打赏
收藏
关于strlen这个函数的问题
char array[30]; printf("strlen(array) = %d\n", strlen(array)); 就这两句代码,打印出来的长度是64,我定义的是30啊,不解! 于是我重新定义char array[64]; 结果打印出来是96 我重新定义成char array[32]; 结果打印出来是64 什么原因啊???? 我身上没分,只能散那么多了+_||
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zyhserry
2010-06-16
打赏
举报
回复
哦,好像是的
char array[30] = "";
printf("strlen(array) = %d\n", strlen(array));
我这么做以后,打印出来就是0了。。。
ok2210495
2010-06-16
打赏
举报
回复
strlen()函数的原理就是找第一个'\0'在哪里的,可能你的程序开辟char array[30]后没有多管闲事给array[30]中的某个赋值为'\0',执行strlen(array)了程序只是很死板地从array[0]开始往下找第一个'\0',找到array[29]了还没找到,不会停继续往下……
你可以用debug看看刚开辟char array[30]时那里面都是什么值吧
huanmie_09
2010-06-16
打赏
举报
回复
char array[30];
要区分
sizeof(array)和strlen(array)的区别.
strlen是计算从array首地址开始,直到遇到字符串结束符'\0'为止,并且不包括'\0'的字符个数
zhangweiit
2010-06-16
打赏
举报
回复
楼主,你这个得到的64,32,其实是一个不确定的值
char array[30];
这个数组还没经过初始化,就直接用strlen求字符长度,是不对的
你用sizeof可以确定,因为sizeof会根据数组定义的类型与大小来得出占用空间
但是strlen只会从数组的头的内存地址开始,直到找到'\0'的字符,或是0才结束
这就是strlen与sizeof的一个重要区别
zyhserry
2010-06-16
打赏
举报
回复
char array[30];
printf("strlen(array) = %d\n", strlen(array));
main里就这两行代码,其它的没有
ok2210495
2010-06-16
打赏
举报
回复
你在array中给它加上字符串结束符'\0'没?
zyhserry
2010-06-16
打赏
举报
回复
也就是说,如果数组大小不是2的整次幂,则先变成2的整次幂,再加上32,why?
strlen
函数
用法及易出现的
问题
文章目录一、描述及用法二、
strlen
函数
使用过程中遇到的
问题
1.越界访问
问题
2.类型转换
问题
三、自建
strlen
函数
的三种方法1.计数器法2.递归法3.指针法 一、描述及用法 描述:计算字符串 str 的长度,直到遇到\0,但不包括\0。 返回值:返回字符串长度 声明:size_t
strlen
( const char * str );(注意sizeof_t代表unsigned int类型) #include<stdio.h> #include<string.h> int m
strlen
函数
的实现 以及出现的
问题
strlen
函数
的实现 size_t
strlen
(const char *string) //size_t是无符号整形 #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;assert.h&amp;gt; int my_
strlen
(const char *str) //const在这里修饰是一大亮点 因为
strlen
函数
只需计算字符串的长度, { ...
关于在判断条件中使用
strlen
()
函数
的
问题
在写KMP算法时,我写了个这样的条件判断循环 while (i<
strlen
(a)&&j<
strlen
(s))//这是错的!!! { if (j == -1 || a[i] == s[j]) i++, j++; else j = n[j]; } 然后出现了一个百思不得其解的
问题
。当j=-1时,直接跳出循环。查了半天才知道是
函数
问题
。 现在我们...
解决Visual Studio禁止使用
strlen
函数
的
问题
解决Visual Studio禁止使用
strlen
函数
的
问题
strlen
()
函数
细节
问题
strlen
()
函数
的结果值为unsigned int 类型,在进行int和unsigned int比较时,会进行数值转换,因此这种细节
问题
应该注意。 一般在使用
strlen
函数
时,多数情况下是用int 定义的变量来储存
strlen
的值。可以运行下面两个程序试一试:1、#include
#include
#include
#inclu
C语言
70,037
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章