1. ホーム
  2. c

[解決済み] strcpyとstrdupの比較

2022-02-07 04:20:34

質問

私は次のことを読みました。 strcpy は文字列をコピーするためのものであり strdup は、文字列を複製するための新しい文字列へのポインタを返します。

どのような場合に strcpy と、どのような場合に strdup ?

解決方法は?

strcpy(ptr2, ptr1) と同じです。 while(*ptr2++ = *ptr1++)

ここで、strdup は次のように等価です。

ptr2 = malloc(strlen(ptr1)+1);
strcpy(ptr2,ptr1);

( memcpy バージョン の方が効率的かもしれません)

つまり、コピーした文字列を別の関数で使いたい場合(ヒープ部に作成されるため)にはstrdupを、それ以外はstrcpyで十分なのです。