【发布时间】:2021-04-13 21:51:09
【问题描述】:
#include<stdio.h>
void my_strconcat(char*, char*);
int main()
{
char s1[] = "HelloGoodMorningEveryone1";
char s6[] = "How";
printf("String Concatenate Start! \n");
my_strconcat(s1, s6);
printf("s1:%s s6:%s \n", s1, s6);
return 0;
}
void my_strconcat(char *src, char *dest)
{
while(*dest)
dest++;
while(*src) {
*dest++ = *src++;
}
*dest = '\0';
}
输出: 字符串连接开始! s1:helloGoodMorningEveryone1 s6:HowHelloGoodMorningEveryone1
【问题讨论】:
-
char s6[]这不会为s1字符串保留附加空间,因此my_strconcat会溢出缓冲区。 -
@dxiv,
s6 -
@dxiv 实际上
s6是目标缓冲区。 -
另请注意,大多数字符串函数是
str...(char *dest, char *src)。因此,您可能会在交换订单时注入混乱。您可以随意这样做,只要确保您在稍后致电strcpy()或strcat()时保持直截了当。