浅谈字符串处理函数的实现(一)

  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);

  下篇带大家看看strcpy的升级版j_0059.gif

你可能感兴趣的:(函数,字符串,C语言)