3

あるオブジェクトを別のオブジェクトにコピーするように設計された他のほとんどすべてのプログラムまたは関数は、基本的な規則を使用します

コピー (ソース、宛先)

一般的な論理でさえ、何かをここからそこにコピーしているという結論に至るでしょう。strcpy が正反対の規則を使用するのはなぜですか? この機能を使おうとする人々を混乱させるだけです。strcpy の作成者は、関数を作成しているときにこのことを考えていたのでしょうか? それとも、strcpy 関数は、この今やユビキタスな使用規則よりも前のものですか?

4

1 に答える 1

4

彼らは、memcpy の構文と一致させたいと考えていました。

char * strcpy ( char * destination, const char * source );

void * memcpy ( void * destination, const void * source, size_t num );

他の C 関数もこの順序を使用します。

基本的な strcpy(...) の実装は次のようになります (キャストをスキップ):

char * strcpy ( char * destination, const char * source ) {
    return memcpy(destination, source, strlen(source) + 1);
}
于 2012-04-20T10:30:27.933 に答える