前两天上课的时候我们老师给我们讲了strcat的自我实现,当时听着很复杂,不过后来老师又把它布置成了作业。今天写完作业后,我有一种醍醐灌顶的感觉。估计老师的用意就在此了。
下面我将写出我自己实现strcat的代码,并且这个要追加的字符长度是由自己控制的。
听起来还不错,是不是。。。(*^__^*) 嘻嘻……
#include<stdio.h>
#include<assert.h>
char *my_strncat(char *dest, const char *src, unsigned int n)
{
assert(dest);
assert(src);
char *ret = src;//标记src的首地址,是因为src在下面要参与运算
while (*dest)
{
dest++;
}
while (n)//你想追加的字符串长度
{
*dest++ = *src++;
n--;
}
*dest = '\0';
return ret;
}
int main()
{
char p1[20] = "hello";
char p2[20] = "world";
int n = 0;
scanf("%d",&n);
char *ret = my_strncat(p1, p2, n);
printf("%s\n",p1);
system("pause");
return 0;
}
值得注意的是,我们在传参的时候,因为p2不会发生变化,所以我们要用const对p2字符串进行保护。使用CONST在一定程度上可以提高程序的安全性和可靠性,另外,在别人观看代码的时候,清晰理解CONST所起的作用,对理解对方的程序也有一些帮助。