strcpy / sprintf / memcpyと適用可能なシナリオの違い

char * strcpy(char * dest、const char * src);

文字列を操作して、コピー元の文字列からコピー先の文字列へのコピーを完了します。コピー元の文字列のサイズがコピー先の文字列の最大格納領域より大きい場合、この操作を実行するとセグメンテーション違反が発生します。

int sprintf(char * str、const char * format、...)

関数操作のソースオブジェクトは文字列に限定されません。ソースオブジェクトは文字列または任意の基本的なタイプのデータです。主な目的は、他のデータ型を文字列に変換することです。

void * memcpy(void * dest、const void * src、size_t n)

メモリのコピーを実現し、メモリの一部を別のメモリにコピーします。この関数には、ソースオブジェクトと宛先オブジェクトのタイプ制限はありません。メモリのコピーのみです。

該当する違い:

コピープロセス中、strcpyとsprintfは、ソース文字に '\ 0'がある場合(つまり、ASCIIコードが00の場合)にデータの終わりを考慮し、コピーを停止します。これはmemcpyを使用している場合は発生しません。

注:以前のバージョンでは、ソフトウェアをコピーしてアップグレードするときにこの状況に遭遇すると聞いていました。

20件の元の記事を公開 Likes6 10,000以上の訪問数

おすすめ

転載: blog.csdn.net/weixin_36662608/article/details/53674212