string 之 strcpy函数

Author: bakari  Date: 2012/8/9

近两年好多的IT公司喜欢拿一些库函数来考,string函数库当然是首选,除此之外,像qsort,STL里的函数也经常火。虽然这些函数咋一看很简单,但有一些细节问题还是很能说明问题,这些细节问题往往就是公司最看重的。吾将之整理作为总结和共享。

下面是我写的代码与源码作的一些比较,均已严格测试通过,分别以“string 之”系列述之。

下面包括strcpy , strncpy函数

 1 /*******************************************************

 2  *  strcpy and strncpy

 3  *  !! Note: *desStr = '\0' Don't forget!

 4  *******************************************************/

 5 char * Mystrcpy(char *desStr, const char *srcStr){

 6     assert(NULL != desStr && NULL != srcStr);

 7     char *address = desStr;

 8 

 9     while( (*desStr ++ = *srcStr ++));  //此条语句与下面的功能一致(值得品味)

10     //while( (*desStr ++ = *srcStr ++) != '\0');

11     //while( (*srcStr ++ ) != '\0' ){

12     //    *desStr ++ = *srcStr;

13     //}

14     //while( *srcStr )

15     //    *desStr++ = *srcStr++;

16     *desStr = '\0';

17 

18     return address;

19 }

20 

21 char * Mystrncpy(char *desStr,const char *srcStr,size_t nCount){

22     assert(NULL != desStr && NULL != srcStr && nCount <= strlen(srcStr));

23     char *address = desStr;

24 

25     while( (nCount --) && (*desStr ++ = *srcStr ++) );

26     //while(nCount --)

27     //    *desStr ++ = *srcStr ++;

28     *desStr = '\0';

29 

30     return address;

31 }

你可能感兴趣的:(String)