从品牌网站建设到网络营销策划,从策略到执行的一站式服务
我们都知道 strcpy() 函数是字符串拷贝函数,那么我们怎样来模拟实现这个函数呢?!
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、成都小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了揭阳免费建站欢迎大家使用!首先,我们要明白,strcpy() 在拷贝字符串的时候是一个一个拷贝的,直到遇到字符串结束标志 '\0' 时才停止拷贝。所以,明白了这一点,我们就可一进行简单的模拟实现了
#include#include #include char *my_strcpy(char *str1, const char *str2) { assert(str1); assert(str2); while(*str1 != '\0') //目标地址遇到'\0'结束 { *str1 = *str2; str1++; str2++; } //while(*str2 != '\0') //注意判断条件一定不能这样写 //{ // *str1 = *str2; // str1++; // str2++; //} return str1; } int main() { char str[10]; //目标地址一定要是一个字符数组 char *pa = "abcdef"; my_strcpy(str,pa); printf("%s\n",str); system("pause"); return 0; }
由于目标地址是没有初始化的一个字符数组,它里边存的内容我们是不知道的,并且在拷贝的过程中它会连同 *pa 中的 '\0' 一块拷贝,所以 while 条件句中的判断是 *str1 != '\0' ,如果判断错误即写为 *str2 != '\0' ,那么就会得到以下结果。
关于 my_strcpy() 函数模拟实现的几点要求:
1.拷贝时是连同字符串中的 '\0' 一块拷贝的;
2.函数实参的设定:原字符串前要加 const 保护;
3.函数的返回值类型要是 char* 类型(便于链式访问);
4.进入函数内部,要对两个指针进行断言,判断指针是否为空;
5.函数要返回一个值(地址);
6.一定要进行优化
最优化代码:
char *my_strcpy(char *str1, const char *str2) { assert(str1); assert(str2); while(*str1++ = *str2++) { ; } return str1; }
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图