连接两个字符串的函数,用指针实现,有时候会出现问题
程序代码:#include <stdio.h>
void my_strcat(char* Pstr1,char* Pstr2);
int main(void)
{
char a[100],b[100];
gets(a);
gets(b);
my_strcat(a,b);
puts(a);
return 0;
}
void my_strcat(char* pstr1,char* pstr2)
{
while(*pstr1 != '\0') pstr1++; //让pstr1指到字符串1的末尾
while(*pstr2 != '\0')
{
*pstr1 = *pstr2; //把字符串2加到字符串1的后面
pstr2++;
pstr1++;
}
pstr1++; //在字符串1后面加上'\0'
*pstr1 = '\0';
}
如果我输入两个较短的字符串,就正确输出。比如字符串a:abcd 字符串b:cdef
可如果我输入两个较长的字符串,就不行了。比如字符串a:aaaaaaaa 字符串b:bbbbbbbb,就会输出:aaaaaaaabbbbbbbb?.
为什么会多出来一个?我明明加了字符串结束标志的啊。









