【发布时间】:2021-08-28 13:08:02
【问题描述】:
我正在尝试将两个字符串复制到一个新指针。这是将字符串指针与子指针连接起来。试图在新指针 str 中输出。这有什么问题?
void addsubstring( char* string, char* sub)
{
//int m = strlen(string);
char *str=(char*)malloc(sizeof(char)*10);
int n =0;
while( *string != '\0')
{
*(str) = *(string++);
printf("char is %c\n", str[n++]);
str++;
}
while( *sub != '\0')
{
*(str) = *(sub++);
printf("char is %c\n", str[n++]);
str++;``
}
printf("%s", str);
}
【问题讨论】:
-
str指向字符串的结尾,而不是开头。此外,您从未添加空终止符。 -
请确保生成的字符串少于 10 个字符,否则会发生超出范围的访问。
-
这是buffer overflow 漏洞的优秀概念验证代码。请不要在生产中使用它,否则会发生不好的事情。
标签: c while-loop c-strings string-concatenation function-definition