私は基本的に、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 を使用した後、どこで free() する必要があるのでしょうか?
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;
}