简介
李明老师的C语言中级课程中,讲解了这一算法,无奈记性不好。。为了以后能时常看到,现记录下来。 函数原型为:1
strcpy( char *dest, char *src )
简单方法
核心代码:1
while( *dest++ = *src++ );
增量值算法
因为dest和src存储位置相邻,与其每次访问dest和src两个地址,不如只访问src所指存储空间,核心代码如下:1
2int delta = dest - src;
while(*(char *)(src + delta)++ = *src++);
每次复制4个字节算法
因为在32操作系统下,每次复制32位字符串,会大大地提高效率。核心代码如下:1
2
3
4
5
6
7
8
9
10
11
12int * d = (int *)dest;
int * s = (int *)src;
while(1) {
if(!CONTAIN_OF_ZERO_BYTE(*s)) {
* d = * s;
d++, s++;
continue;
}
src = s;
dest = d;
while( *dest++ = *src++ ); //最多执行4次
}
上述的那个宏很重要,可以判断一个字节中是否含有‘\0’,因为字符串复制遇到’\0’就可以结束了。1
2