我在C语言中使用指针创建了一个strcat
,但是在while
循环中遇到了以下问题。
这是我的代码,它无法将str2(这里是t
)添加到str1(这里是s
):
char *pstrcat(char *s,char *t)
{
char *start=s;
while(*s++)
;
while(*s++=*t++){
;
}
return start;
}
我的主要代码是:
int main()
{
char s[35]=" hi nice to meet you ";
char t[]="ho";
printf("%s",pstrcat(s,t));
return 0;
}
期望值:
我期待的输出是hi nice to meet you ho
,但得到的却是hi nice to meet you
。
然而,当我稍微改变while
循环(pstrcat
的第一个while
循环)时,它开始工作。
新的while
循环如下所示:
while(*s!='\0')
s++;
问题简述:
我无法理解这两个循环的区别。我认为它们都应该工作,因为它们都必须在'\0'
结束,s
的地址当前指向'\0'
。
但是,如果我的代码不起作用,我一定是错了。
3条答案
按热度按时间vktxenjb1#
这个代码有两个问题。
1.目标数组没有足够的空间容纳额外的字符。
pstrcat
中的第一个while循环将指针移动到\0
之外它可以重写为
bprjcwpo2#
您可能不知道一个字符数组是否足够大,可以容纳两个字符串,因此创建一个新的字符数组会更安全,但您必须记住在使用完它之后释放它。要连接两个以null结尾的字符串,您可以执行以下操作...
deikduxw3#
感谢大家,我设法解决了这个问题,在以下两个方面: