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