码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-10-25 19:28:35      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

首先直接上源码:

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 

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

标签:

原文地址:http://www.cnblogs.com/stemon/p/4909282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!