zoukankan      html  css  js  c++  java
  • 库函数strlen源码重现及注意问题

    首先直接上源码:

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

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

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

    可以使用 strlen(a) > strlen(b) 这个表达式判断两个字符串的大小,不能使用 strlen(a) - strlen(b) > 0 

  • 相关阅读:
    嵌入式
    IT 管理
    linux 网络编程 排序
    linux frameBuffer
    虚拟现实
    vc 串口
    OpenGLES 图像
    runloop
    归档
    商标查询
  • 原文地址:https://www.cnblogs.com/stemon/p/4909282.html
Copyright © 2011-2022 走看看