编写strcpy函数
2016-05-16 13:55
351 查看
已知strcpy函数的原型是 char *strcpy(char *strDest, const char *strSrc);
(1)不调用C++/C的字符串库函数,请编写函数
char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL)); // 2分
char *address = strDest; // 2分
while( (*strDest++ = * strSrc++) != ‘\0’ ) // 2分
NULL ;
return address ; // 2分
}
(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
答:为了实现链式表达式。 // 2分
例如 int length = strlen( strcpy( strDest, “hello world”) );
否则就要这样写,,写成好几句了:
char strDest[12];
strcpy( strDest, “hello world”);
int length = strlen(strDest);
而这种直接返回char *的手段,就是为了后来函数调用者方便而设计的.不用你这么麻烦用上述方法去使用了,而直接可以使用拷贝后的dest字符串了.这种方便的实现方法,看起来就是链子链在一起的,所以称为 链式表达式
(3) 思考一下,为什么不能直接return strDest呢?非要去定义一个address?
(1)不调用C++/C的字符串库函数,请编写函数
char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL)); // 2分
char *address = strDest; // 2分
while( (*strDest++ = * strSrc++) != ‘\0’ ) // 2分
NULL ;
return address ; // 2分
}
(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
答:为了实现链式表达式。 // 2分
例如 int length = strlen( strcpy( strDest, “hello world”) );
否则就要这样写,,写成好几句了:
char strDest[12];
strcpy( strDest, “hello world”);
int length = strlen(strDest);
而这种直接返回char *的手段,就是为了后来函数调用者方便而设计的.不用你这么麻烦用上述方法去使用了,而直接可以使用拷贝后的dest字符串了.这种方便的实现方法,看起来就是链子链在一起的,所以称为 链式表达式
(3) 思考一下,为什么不能直接return strDest呢?非要去定义一个address?
相关文章推荐
- POJ 1743 后缀数组
- PHP 日期的加减
- Echarts学习笔记之饼图
- HttpClient+ Spring兑现多线程
- python3下载百度图片
- 安卓开发,按两次返回键退出应用
- 关于启动图
- SpringMVC源码分析系列
- 字符编码的故事(ASCII,ANSI,Unicode,Utf-8区别)转载
- 21: Arithmetic Sequence--HZAU(dp)
- ant 入门使用指南
- 学习总结
- C语言ODBC操作MySQL数据库
- IDF 实验室 啥?
- mvvm 与 mvc
- slidingmenu
- imports,using,和include之间的区别
- 第12周项目-复数类中的运算符重载(2)(友元函数)
- GridView 分页
- ajax在firefox和chrome下提交不成功的解决办法