我在实现strnact是发现dest++和++dest给出的结果不同
char* my_strncat(char* dest, const char* src, int n)
{
char* ret = dest;
while (*++dest);
while (n && (*dest++ = *src++))
n--;
*dest++ = '\0';
return ret;
}
int main()
{
char a[30] = "abcdefg";
char c[] = "what is error";
my_strncat(a,c,6);
printf("%s", a);
return 0;
}
abcdefg,我用dest++我的dest指针没有动
而我用++dest可以
把dest++换成++dest
abcdefgwhat i
while (*dest++); 当循环结束,dest已经指向字符串末尾'\0'之后了。
因此上面循环结束后需加一句 dest--;
while (*dest && dest++);
while (*dest && ++dest);