连接两个字符串的函数,用指针实现,有时候会出现问题
程序代码:
#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?. 为什么会多出来一个?我明明加了字符串结束标志的啊。