copyString と concatString の 2 つの関数を作成するように依頼され、両方を実装しましたが、得られた出力で、より良い方法で実行できると言われましたが、その方法については説明されませんでした。
今、私はどうすればもっとうまくやれるのか私を殺しているので、ここにコードがあります。提案を聞いて喜んでいます。
void copyString (char **strDst, const char *strSrc)
{
char *strTmp = NULL;
int length = strlen (src);
if (*strDst== NULL)
{
*strDst= malloc (length);
}
else
{
if (strlen(*strDst) != length)
{
strTmp = *strDst;
}
*strDst= malloc (length);
}
strcpy (*strDst, strSrc);
if (strTmp != NULL)
free (strTmp );
}
void concatString (char **strDst, const char *cat)
{
int cat_length = strlen (cat);
if (cat_length > 0)
{
*strDst= realloc (*strDst, strlen (*strDst) + cat_length);
strcat (*strDst, cat);
}
}
void main(int argc, char *argv[])
{
char *str = NULL;
copyString(&str, "Hello World");
puts(str);
copyString(&str,str+6);
puts(str);
concatString(&str, " Pesron");
}
出力は次のようになります:
1.Hello World
2. World
3. World Person
ありがとう。