假设strSrc指向的字符串为a1B2C3,则只把其中的字母aBC添加到指针strDest指向的字符串后
#include <iostream>
using namespace std;
char* mystrcat(char* strDest, const char* strSrc)
{
char* p = strDest;
while (*p != NULL)
p++;
while (*strSrc !=NULL)
{
if (*strSrc >= 'a' && *strSrc <= 'z' || *strSrc >= 'A' && *strSrc <= 'Z')
{
*p = *strSrc;
}
strSrc++;
p++;
}
*p == NULL;
return p;
}
int main()
{
char arr[] = "a1B2C3";
char Dest[] = "stu";
cout << mystrcat(Dest, arr);
return 0;
}
就是输出后的结果是stua,无法输出剩下的B C,找了好久都不知道哪儿错了。【哭】
#include <iostream>
using namespace std;
char *mystrcat(char *strDest, const char *strSrc)
{
char *p = strDest, *s;
s = p;
while (*p != '\0')
p++;
while (*strSrc != '\0')
{
if (*strSrc >= 'a' && *strSrc <= 'z' || *strSrc >= 'A' && *strSrc <= 'Z')
{
*p = *strSrc;
p++;
}
strSrc++;
}
*p = '\0';
return s;
}
int main()
{
char arr[] = "a1B2C3";
char Dest[] = "stu";
cout << mystrcat(Dest, arr);
return 0;
}
原因1. 因为While进入第二次循环后,*p指向了NULL,后面的字符串无法显示;
解决方法: