Vs

C / C ++はstrcpy関数を使用してエラーを報告します: 'XXXに未処理の例外があります:0xC0000005:ロケーション0x00000000への書き込み中にアクセス違反が発生しました'



C C Uses Strcpy Function Report An Error



Strcpyは、C言語の標準ライブラリ関数です。その機能は、「 0」ターミネータを含む文字列を別のアドレス空間にコピーすることです。戻り値はchar *型です。そのプロトタイプ宣言:char * strcpy(char * dest、const char * src)ただし、strcpy関数を使用する場合、destのパラメーターとしてもパラメーターとしても、引数としてnullポインターを使用できないことに注意する必要があります。 srcの場合、それ以外の場合はエラーが報告されます: 'XXXに未処理の例外があります:0xC0000005:場所0x00000000への書き込み中にアクセス違反が発生しました。'

例1:nullポインターをdestのパラメーターとして使用することはできません

次のコードがあります。



#include #include int main() { char str[20] = { 0 } strcpy(NULL, 'hello world') printf('str:%s ',str) return 0 }

コンパイルして実行すると、以下に示すように、プログラムがエラーを報告していることがわかります。



例2:srcのパラメーターとしてnullポインターを使用することはできません

次のコードがあります。

#include #include int main() { char str[20] = { 0 } strcpy(str, NULL) printf('str:%s ',str) return 0 }

コンパイルして実行すると、以下に示すように、プログラムがエラーを報告していることがわかります。



上記の2つの例は、strcpy関数への引数としてnullポインターを使用できないことを証明しています。