字符串长度就是它所包含的字符个数。我们很容易通过对字符进行计数来计算字符串的长度。库函数strlen的原型如下:
size_t strlen(char const *string);
警告:
注意strlen返回的是一个类型为size_t的值。这个类型是在头文件stddef.h中定义的,它是一个无符号整数类型。在表达式中使用无符号数可能导致不可预料的结果。例如:下面两个表达式看上去是相等的:
if(strlen(x)>=strlen(y))... if(strlen(x)-strlen(y)>=0)...
但是事实上它们是不相等的。第一个语句按照我们预想的那样工作,但是第二个语句的结果将永远是真。strlen的结果是个无符号数,所以操作符>=左边的表达式也将是无符号数,而无符号数绝不可能是负的。
#includesize_t strlen(char const *string) { int length; for(length=0;*string++!=' ';) { length+=1; } return length; }
注意:
表达式中如果包含了有符号数和无符号数,可能会产生奇怪的结果。和前一对语句一样,下面两条语句并不相等,其原因相同。
if(strlen(x)>=10)... if(strlen(x)-10>=0)...
如果把strlen的返回值强制转换为int,就可以消除这个问题。