6

strcpy(3)(and strncpy(3)) が最初の引数を返すのはなぜですか? これがどのように価値を追加するのかわかりません。代わりに、コピーされたバイト数を返してもらいたいことがよくあります。

補遺: 結果の文字列の長さも必要な場合はどうすればよいですか? 独自のバージョンを実装する必要は本当にありますか?

4

3 に答える 3

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));
于 2013-05-05T15:49:22.400 に答える
1

あなたが何かをすることができるように

char * str = strcpy(malloc(12), "MyNewString");
于 2013-05-05T15:48:57.317 に答える