首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

strcpy跟strlen的C语言实现

2013-01-17 
strcpy和strlen的C语言实现1.strcpy方法:char * strcpy( char *strDest, const char *strSrc ) { assert(

strcpy和strlen的C语言实现

1.strcpy方法:

char * strcpy( char *strDest, const char *strSrc )

{

 assert( (strDest != NULL) && (strSrc != NULL) );

 char *address = strDest; //指针指向存放拷贝的字符串的数组的首元素位置

 while( (*strDest++ = * strSrc++) != ‘\0’ ); //当没有遇到字符‘\0’时,把数组strSrc中的元素一次赋值到strDest数组的响应位置

  return address;//返回数组首地址的指针,相当于数组名

}



2. strlen方法:,它没有包括字符串末尾的'\0'。

int strlen( const char *str ) //输入参数const

{

 assert( strt != NULL ); //断言字符串地址非0

 int len;

 while( (*str++) != '\0' )

 {

  len++;

 }

 return len;

}

?

int strlen( const char *str ) //输入参数const{ assert( strt != NULL ); //断言字符串地址非0 for (const char* p = str; *p; p++) ; return p-str;}

这样循环内部执行的语句少些(不用每次len++),不知道是否性能会高些?
但是我知道,似乎MS的lib里面,strlen不是这样实现的,它好像把str转成int*,然后怎么做,忘记了。这样可以减少循环次数。int strlen( const char *str ) //输入参数const{ assert( strt != NULL ); //断言字符串地址非0 for (const char* p = str; *p; p++) ; return p-str;}

这样循环内部执行的语句少些(不用每次len++),不知道是否性能会高些?
但是我知道,似乎MS的lib里面,strlen不是这样实现的,它好像把str转成int*,然后怎么做,忘记了。这样可以减少循环次数。

这样做循环里同样做了 p++, 开销比 len++ 小吗?

热点排行