不用库函数实现strcpy,链式表达式
2014-01-21 16:25
246 查看
已知strcpy函数的原型是 char *strcpy(char *strDest, const char *strSrc);
其中strDest是目的字符串,strSrc是源字符串。
(1)不调用C++/C的字符串库函数,请编写函数
strcpy 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”) );
--------------------------------------------------------------------------------------------------------------------------------
看到了这个词:链式表达式,之前没有听过,所以去百度了一下,发现有人解释的还算明白:
--------------------------------------------------------------------------------------------------------------------------------
http://topic.csdn.net/t/20061123/21/5180993.html 1,
就是方便一些,否则就要这样写:
char strDest[12];
strcpy( strDest, “hello world”);
int length = strlen(strDest);
什么链式就是一连串写下来的意思。。。
--------------------------------------------------------------------------------------------------------------------------------
其实,说白了,就是如果上面的字符串拷贝函数strcopy的返回值是void,那么,上面那句:
int length = strlen( strcpy( strDest, “hello world”) );
就要像上面那位的回答,写成好几句了:
char strDest[12];
strcpy( strDest, “hello world”);
int length = strlen(strDest);
而这种直接返回char *的手段,就是为了后来函数调用者方便而设计的.不用你这么麻烦用上述方法去使用了,而直接可以使用拷贝后的dest字符串了.这种方便的实现方法,看起来就是链子链在一起的,所以称为 链式表达式
其中strDest是目的字符串,strSrc是源字符串。
(1)不调用C++/C的字符串库函数,请编写函数
strcpy 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”) );
--------------------------------------------------------------------------------------------------------------------------------
看到了这个词:链式表达式,之前没有听过,所以去百度了一下,发现有人解释的还算明白:
--------------------------------------------------------------------------------------------------------------------------------
http://topic.csdn.net/t/20061123/21/5180993.html 1,
就是方便一些,否则就要这样写:
char strDest[12];
strcpy( strDest, “hello world”);
int length = strlen(strDest);
什么链式就是一连串写下来的意思。。。
--------------------------------------------------------------------------------------------------------------------------------
其实,说白了,就是如果上面的字符串拷贝函数strcopy的返回值是void,那么,上面那句:
int length = strlen( strcpy( strDest, “hello world”) );
就要像上面那位的回答,写成好几句了:
char strDest[12];
strcpy( strDest, “hello world”);
int length = strlen(strDest);
而这种直接返回char *的手段,就是为了后来函数调用者方便而设计的.不用你这么麻烦用上述方法去使用了,而直接可以使用拷贝后的dest字符串了.这种方便的实现方法,看起来就是链子链在一起的,所以称为 链式表达式
相关文章推荐
- 不用库函数,自己实现strcpy和memcpy函数
- 不用库函数实现strcpy
- 不用库函数,实现char* strcpy(char* strDes,const char* strSrc)函数
- strcpy实现及返回值问题(支持链式表达式,增加了函数的附加值)
- [C/C++笔面试]不用库函数自己实现strcpy和strncpy
- 不用库函数,自己实现strcpy和memcpy函数;二者的区别
- 不调用库函数,实现字符串复制函数char * strcpy(char * dst, const char * src) C/C++软件开发求职面试题 必备考点(二)
- 高效面试之实现strcpy等简单库函数
- 不调用库函数,实现strcpy
- strcpy循环实现和不用循环实现
- 不调用库函数 实现strcpy 11月15日
- strcpy 链式表达式
- 模拟实现部分库函数(strcpy,strcmp,strcat,strstr,memcpy,memmove,memset)
- 不使用库函数实现strcpy,strlen函数
- 实现库函数strlen和strcpy
- 实现power(base,exponent),不用库函数和for循环
- c++不用库函数实现strcat
- 模拟实现库函数strcpy
- 库函数学习(1):简单实现strcpy
- 不用任何库函数实现以单词为单位的字符串逆转算法(C#)