strcpy(3)
(and strncpy(3)
) が最初の引数を返すのはなぜですか? これがどのように価値を追加するのかわかりません。代わりに、コピーされたバイト数を返してもらいたいことがよくあります。
補遺: 結果の文字列の長さも必要な場合はどうすればよいですか? 独自のバージョンを実装する必要は本当にありますか?
歴史的な理由から。strcpy
そして友人は70年代初頭にさかのぼり、戻り値の意図されたユースケースは一種のチェーンになると思います:
// copy src into buf1 and buf2 in a single expression
strcpy(buf1, strcpy(buf2, src));
または
char *temp = xmalloc(strlen(const_str) + 1);
function_that_takes_mutable_str(strcpy(temp, const_str));
あなたが何かをすることができるように
char * str = strcpy(malloc(12), "MyNewString");