首頁 >後端開發 >C++ >為什麼我們認為C/C++中的strncpy是不安全的?

為什麼我們認為C/C++中的strncpy是不安全的?

WBOY
WBOY轉載
2023-09-13 09:17:021257瀏覽

為什麼我們認為C/C++中的strncpy是不安全的?

函數strncpy()用於將指定數量的字元從來源複製到目標。

以下是strncpy()的語法

char *strncpy( char *destination, char *source, size_t n);

在這裡,destination是指向目標數組的指針,來源字串將複製到該數組中,source是要複製的字串, n是要從來源字串複製的最大字元數。

strncpy()函數是不安全的,因為如果在來源字串的前n個字元中沒有NULL字符,則目標字串將不以NULL結尾。

以下是一個示範C 中strncpy()函數的程式。

範例

 線上示範

#include <iostream>
#include <cstring>
using namespace std;
int main () {
   char source[20] = "This is a string";
   char dest[20];
   strncpy(dest, source, 4);
   cout << "The destination string is: " << dest;
   return 0;
}

輸出

#上述程式的輸出如下。

The destination string is: This

現在讓我們理解上面的程式。

來源字串包含資料「This is a string」。然後使用 strncpy() 將前四個字元複製到目標字串中。然後列印目標字串的內容。顯示這一點的程式碼片段如下。

char source[20] = "This is a string";
char dest[20];
strncpy(dest, source, 4);
cout << "The destination string is: " << dest;

以上是為什麼我們認為C/C++中的strncpy是不安全的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除