Fungsi strcpy mempunyai risiko keselamatan dan mungkin menimpa memori rentetan sasaran. Penambahbaikan termasuk: menggunakan fungsi strncpy untuk menentukan bilangan maksimum aksara yang boleh disalin. Gunakan fungsi strlcpy untuk menyemak panjang rentetan sasaran secara automatik. Dalam C++, anda boleh menggunakan kelas std::string untuk mengendalikan rentetan, yang menyediakan cara yang lebih selamat untuk beroperasi.
Ketidakselamatan fungsi strcpy
Fungsi strcpy ialah fungsi C yang digunakan untuk menyalin rentetan. Ia menimbulkan bahaya keselamatan kerana fungsi tersebut menimpa memori di sebalik rentetan destinasi jika saiz penampan rentetan destinasi tidak cukup besar untuk memegang rentetan sumber.
Kaedah untuk menambah baik strcpy
Untuk menyelesaikan masalah ketidakselamatan fungsi strcpy, kaedah berikut boleh digunakan untuk menambah baik:
, tetapi ia boleh disalin Rentetan sumber menentukan bilangan maksimum aksara yang boleh disalin. Ini menghalang penimbal rentetan destinasi daripada ditulis ganti.
Contoh:
<code class="cpp">char destination[10]; strncpy(destination, "Hello World", 10);</code>
Kod di atas hanya akan menyalin "Hello Wor" ke tatasusunan destinasi memandangkan saiznya ialah 10.
Fungsi strlcpy ialah versi lebih selamat bagi fungsi strcpy yang secara automatik menyemak panjang penimbal rentetan destinasi dan menyalin hanya bilangan aksara yang boleh dimuatkan.
Contoh:
<code class="cpp">char destination[10]; strlcpy(destination, "Hello World", 10);</code>
fungsi strlcpy hanya akan menyalin "Hello Wo" ke tatasusunan destinasi memandangkan saiznya ialah 10.
Dalam C++, anda boleh mempertimbangkan untuk menggunakan kelas std::string untuk mengendalikan rentetan. Ia menyediakan cara yang lebih selamat untuk memanipulasi rentetan dan mengurus peruntukan memori secara automatik.
Contoh:
<code class="cpp">std::string destination = "Hello "; destination += "World";</code>
Atas ialah kandungan terperinci Bagaimana untuk menukar strcpy dalam c++ jika ia tidak selamat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!