关于strcpy函数的实现
来源:互联网 发布:java学生管理系统 编辑:程序博客网 时间:2024/05/17 02:27
char *strcpy(char *dest,const char *src){ size_t i = 0; while((dest[i] = src[i]) != '\0') i++; return dest;}
将指针src指向的字符串复制到指针dest指向的位置;使用数组下标实现的版本
char *strcpy(char *dest,const char *src){ char *temp = dest; while((*dest = *src) !='\0'){ dest++; src++; } return temp;}
将指针src指向的字符串复制到指针dest指向的位置;使用指针方式实现的版本
因为参数是通过值传递的,所以在strcpy函数中可以以任何方式使用参数dest和src。在此,src和dest是方便进行了初始化的指针,循环每执行一次,它们就沿着相应的数组前进一个字符,知道将src中的结束符'\0'复制到s为止。
实际上,strcpy函数并不会按照上面的这些方式编写。经验丰富的程序员跟喜欢将它编写成下列形式:
char *strcpy(char *dest,const char *src){ char *temp = dest; while((*dest++ = *src++) != '\0') ; return temp;}
在该版本中,dest和src的自增运算放到了循环的测试部分中。表达式*src++的值是执行自增运算之前src所指向的字符。后缀运算符++表示在读取该字符之后才改变src的值。同样的道理,在dest执行自增运算之前,字符就被存储到了指针dest指向的旧位置。该字符值同样也用来和空字符'\0'进行比较运算,以控制循环的执行。最后的结果依次将src指向的字符复制到dest指向的位置。直到遇到结束符'\0'为止(同时也复制该结束符)。
为了进一步精炼程序,我们注意到,表达式同'\0'的比较是多余的,因为只需要判断表达式的值是否为0即可。因此,该函数可进一步写成下列形式:
char *strcpy(char *dest,const char *src){ char *temp = dest; while(*dest++ = *src++) ; return temp;}该函数初看起来不太容易理解,但这种表示方法是很有好处的。我们应该掌握这种方法,C语言程序中经常会采用这种写法。
0 0
- 关于strcpy函数的实现
- 关于strcpy函数的自定义实现
- strcpy函数的实现
- strcpy函数的实现
- strcpy函数的实现
- strcpy函数的实现
- strcpy函数的实现
- strcpy函数的实现
- strcpy函数的实现
- strcpy函数的实现
- strcpy函数的实现
- strcpy函数的实现
- strcpy函数的实现
- strcpy函数的实现
- strcpy函数的实现
- strcpy函数的实现
- strcpy函数的实现
- strcpy函数的实现
- 01背包路径输出
- PHP设计模式之适配器模式
- 结构体练手
- 设置Linux系统的时区
- 巧用setContentView的应用
- 关于strcpy函数的实现
- 打开Linux ftp服务,如:vsftpd: unrecognized service
- 冒泡排序
- android自定义滑动选择开关
- 无法连接到visual studio开发服务器的解决方法不仅仅是关闭防火墙
- U盘装系统win7
- EasyUI菜单
- 快速排序
- 实现弹出选项