您的位置:首页 > 其它

库函数strlen源码重现及注意问题

2015-10-25 19:00 155 查看
首先直接上源码:

size_t strlen (const char * str)
{
const char *eos = str;
while(*eos++);
return(eos - str - 1);
}


可以看到strlen是利用一个新的char*指针,一直向后遍历,找到字符串结尾的\0,的下一个元素。然后计算距离。

但是这里注意一点 size_t 其实是 unsigned int 类型的。所以比较两个字符串长度大小的时候不能使用 strlen(a) - strlen(b) 。因为两个无符号的整型相减是得不到一个负数的,所以不管怎么样得到的结果都是一个整数。也就是strlen(a)永远大于strlen(b)。

可以使用 strlen(a) > strlen(b) 这个表达式判断两个字符串的大小,不能使用 strlen(a) - strlen(b) > 0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: