您的位置:首页 > 其它

strcpy

2015-09-23 17:41 155 查看
//  复制字符串   记住避免冲突,这里写成 strcopy   而不是 strcpy
#include<stdio.h>
char * strcopy (char *dest, const char *src);
int main()
{

char string[20];              //  定义一个字符串数组
char  *str1="Heloo , zhangqi  ";    //  对字符指针变量初始化,实际上是把字符串第1个元素的地址(即存放字符串的字符数组的首元素地址)赋给str1

strcopy(string,str1);         //  调用strcopy函数    这里 实参是 一个数组名,一个字符指针变量    当实参是数组名,形参是指针变量时,只要保证数据类型一致即可传递。

printf("%s \n",string);
return 0;

}

char *  strcopy (char *dest, const char *src)      //  来自 glibc的源码,改动了地方    const ptrdiff_t off = dest - s - 1;  ptrdiff_t 也就是 signed int
                            //  当实参是数组名,形参是指针变量时,只要保证数据类型一致即可传递。

{                            
char c;
char *s = (char *) src;         // char *s 的s,而指针是指向一块内存区域,它指向的内存区域的大小可以随时改变,而且当指针指向常量字符串时,它的内容是不可以被修改的,否则在运行时会报错。
// 这里的 s 指针 指向了 src ,应该是src的首地址吧
const  signed int off = dest - s - 1;       //  这里不能理解??? tell me why ???

do
{
c = *s++;         //   相当于 c=*(s++);  分开就是 因为 ++在后,所以先 运算后 s+1
s[off] = c;
}
while (c != '\0');

return dest;
}





具体自己分析看看啊!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: