C语言strlen函数
strlen()函数用来计算字符串的长度,其原型为:unsigned int strlen (char *s);
使用之前应包含头文件 #include <string.h>
strlen函数经典实现
#include <string.h>
#include <stdlib.h>
#undef strlen // #undef 是在后面取消以前定义的宏定义
#ifndef STRLEN // 条件指示符#ifndef 的最主要目的是防止头文件的重复包含和编译
#define STRLEN strlen
#endif
size_t
STRLEN (const char *str)
{
const char *char_ptr;
const unsigned long int *longword_ptr;
unsigned long int longword, himagic, lomagic;
for (char_ptr = str; ((unsigned long int) char_ptr
& (sizeof (longword) - 1)) != 0;
++char_ptr)
if (*char_ptr == '\0')
return char_ptr - str;
longword_ptr = (unsigned long int *) char_ptr;
himagic = 0x80808080L;
lomagic = 0x01010101L;
if (sizeof (longword) > 4)
{
himagic = ((himagic << 16) << 16) | himagic;
lomagic = ((lomagic << 16) << 16) | lomagic;
}
if (sizeof (longword) > 8)
abort ();
for (;;)
{
longword = *longword_ptr++;
if (((longword - lomagic) & ~longword & himagic) != 0)
{
const char *cp = (const char *) (lo