C语言标准库中有许多处理字符串的库函数,例如strlen、strcpy、strcat、strcmp和strstr等等。这些库函数的实现使得我们平时处理字符串简单轻松了许多。那么这些库函数到底是怎样实现的呢?了解了其具体实现后,相信对于应用将更加得心应手,不会再出现参数调用出错,返回值不对等低级错误了。今天我先带大家了解了解其一,字符串拷贝函数strcpy。
strcpy函数的原型是:
char *strcpy(char *dst, const char *src);
其功能是实现字符串的复制,即
把从src地址开始且含有‘\0‘结束符的字符串复制到以dest开始的地址空间。strcpy函数的实现:
char *mystrcpy(char *dst,const char *src) { char *ret=dst; assert(dst); assert(src); while(*dst++=*src++) { ; } return ret; }
首先,为什么要用const来修饰源字符串呢?我们知道const可以保证其修饰的变量受到保护,strcpy函数只是将源字符串拷贝到目的字符串中,所以源字符串我们是不能修改的。既然不能修改就用const将其保护起来。其次,一进入函数我们就对地址的有效性进行断言,如果是个空地址,直接就可以抛出一个错误,增加了程序的健壮性。最后,在返回值上我们使其返回char*,使函数能够支持链式表达式。
看了strcpy函数的原型及其实现的说明,是不是加深了对其的理解,接下来我来给大家做一个调用库函数示例:
char str[20]; char *s="hello"; strcpy(str,s); printf("%s\n",str);
原文:http://luminous.blog.51cto.com/10797288/1738014