我基本上是在用 C 编写我自己的字符串函数。
我一直在尝试strcat
使用指针来执行该函数,但似乎无法理解我是否应该使用malloc
或将其留给堆来分配内存。
char *my_strcat(const char *s1, const char *s2)
{
const unsigned char *p1 = (const unsigned char *)s1;
const unsigned char *p2 = (const unsigned char *)s2;
unsigned char *string;
//string = malloc(strlen(s1) + strlen(s2) + 1);
while (*p1 != '\0')
{
*string = *p1;
string++;
p1++;
if(*p1 == '\0')
{
while(*p2 != '\0')
{
*string = *p2;
string++;
p2++;
}
}
}
return (char *)string;
}
有关更有效地执行此任务或我做错的事情的任何提示都会很棒!
干杯
编辑
好的,所以我得到了一个可行的解决方案,但只是想知道在我使用 malloc 之后我应该在哪里释放()它?
char *my_strcat(const char *s1, const char *s2)
{
const unsigned char *p1 = (const unsigned char *)s1;
const unsigned char *p2 = (const unsigned char *)s2;
char *string = malloc(sizeof(char *));
char *res = string;
while (*p1 != '\0')
{
*string = *p1;
string++;
p1++;
}
while (*p2 != '\0')
{
*string = *p2;
string++;
p2++;
}
*string = '\0';
return (char *)res;
}