Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Tại sao coi strncpy không an toàn trong C/C++?


Hàm strncpy() sao chép số ký tự chỉ định từ nguồn đến đích.

Cú pháp strncpy():

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

Ở đây, destination con trỏ mảng đích sao chép chuỗi nguồn, source chuỗi sao chép, n tối đa ký tự sao chép từ nguồn.

strncpy() không an toàn vì nếu ký tự NULL không có trong n ký tự đầu nguồn, chuỗi đích sẽ KHÔNG kết thúc bằng NULL.

Chương trình minh họa strncpy() C++:

Ví dụ

#include <iostream>
#include <cstring>
using namespace std;

int main() {
    char source[20] = "This is a string";
    char dest[20];
    strncpy(dest, source, 4);
    cout << "Chuỗi đích là: " << dest;
    return 0;
}

Kết quả

Đầu ra chương trình:

Chuỗi đích là: This

Hiểu chương trình:

Chuỗi nguồn chứa "This is a string". strncpy() sao chép 4 ký tự đầu vào đích. In nội dung đích. Đoạn mã:

char source[20] = "This is a string";
char dest[20];
strncpy(dest, source, 4);
cout << "Chuỗi đích là: " << dest;