题目:
用指针方式实现第2章中的函数strcat。函数strcat(s,t)将t指向的字符串复制到s指向的字符串的尾部。
自我解答:
编程思想是先找到字符串s的结尾,然后依次复制字符串t的内容到s的结尾
void strcat(char *s, char *t)
{
while(*s++); /* find the end of the s */
s--;
while(*s++ = *t++); /* copy t to the end of s */
}
第一个while循环的目的是找到字符串s的结尾,当退出while循环时由于指针s自加了1,所以在开始复制之前要先自减定位到s中的'\0'字符,第二个while循环执行copy的动作
参考答案:
/* strcat: concatenate t to the end of s; pointer version */
void strcat(char *s, char *t)
{
while(*s);
s++;
while(*s++ = *t++);
}
指针s和t的初值分别指向各字符串的开始位置。
第一个while循环将递增指针s,直到它找到字符串结束符(‘\0’)为止。在找到字符串结束符之前,语句:
while(*s) 将一直为真。
第二个while循环负责把字符串t追加到字符串s的末尾。如下所示:
while(*s++ = *t++);
上面这条语句的作用是把*t赋值给*s,在递增这两个指针;这一过程将一直循环到指针t指向字符串结束符为止。