C语言strlen( )与sizeof( )的区别

博客介绍了strlen( )和sizeof( )在求字符串长度上的不同。strlen( )统计时不包括结束字符'\0',结果为无符号数;sizeof( )统计时包括结束字符。还通过示例说明了strlen( )遇不到'\0'会一直统计,以及无符号数相减的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

strlen( )和sizeof( )作用上都是用来求字符串长度的,但是它们之间存在不同之处。

       首先,strlen( )统计字符串长度,它不包括结束字符(即'\0'字符),而对于sizeof( ),它是包括结束字符的(即'\0'字符)。

例如:

char arr[] = "gdufe";//等价于char arr[6] = {'g','d','u','f','e','\0'};
printf("arr的长度1=%d\n",strlen(arr));
printf("arr的长度2=%d\n",sizeof(arr));

上面代码输出结果是:arr的长度1=5,arr的长度2=6

(Note:如果是char arr[]={'g','d','u','f','e'},那么strlen(arr)的结果不会是5,因为strlen( )要遇到‘\0’才会停止统计,否则会一直统计下去,结果会大于5)

       其次,strlen( )得到的结果是一个无符号数,对于无符号数相减,得到的永远大于=0;

例如:

char a[] = "gdufe";
char b[] = "iloveyou";
if(strlen(a)>=strlen(b))
    printf("true\n");
else
    printf("false\n");
if(strlen(a)-strlen(b)>=0)
    printf("true\n");
else
    printf("false\n");

通过改变a,b第一个if有可能输出false,也有可能输出true,但是不管怎么改变a和b,第二个if的输出永远是:true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值