首页 > 其他 > 详细

strlen 源码

时间:2014-03-31 14:38:07      阅读:437      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
size_t strlen_d(const char *str) {
 
    const char *char_ptr;
    const ulong *longword_ptr;
     register ulong longword, himagic, lomagic;
 
     for (char_ptr = str; ((ulong)char_ptr 
         & (sizeof(ulong) - 1)) != 0;
        ++char_ptr) {
         if (*char_ptr == \0)
             return char_ptr - str;
     } 
     longword_ptr = (ulong*)char_ptr;
 
     himagic = 0x80808080L;
     lomagic = 0x01010101L;
 
     while (1) {

         longword = *longword_ptr++;
 
         if (((longword - lomagic) & himagic) != 0) {
 
             const char *cp = (const char*)(longword_ptr - 1);
             
             if (cp[0] == 0)
                 return cp - str;
             if (cp[1] == 0)
                 return cp - str + 1;
             if (cp[2] == 0)
                 return cp - str + 2;
             if (cp[3] == 0)
                return cp - str + 3;
         }
     }
}
bubuko.com,布布扣

strlen 源码,布布扣,bubuko.com

strlen 源码

原文:http://www.cnblogs.com/xzenith/p/3632748.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!