Hàm thư viện C char *strncpy(char *dest, const char *src, size_t n) sao chép tối đa n ký tự từ chuỗi nguồn src sang chuỗi đích dest. Nếu độ dài src nhỏ hơn n, phần còn lại của dest sẽ được đệm bằng byte null.
Mảng ký tự gọi là chuỗi.
Khai báo
Khai báo mảng:
char tenChuoi [kichThuoc];
Ví dụ: char string[50]; chuỗi 50 ký tự
Khởi tạo
- Dùng hằng ký tự đơn:
char string[10] = { 'H', 'e', 'l', 'l', 'o' ,'\0'}
- Dùng hằng chuỗi:
char string[10] = "Hello";
Truy xuất - Dùng "%s" để truy xuất chuỗi đến '\0'.
Hàm strncpy()
- Dùng để sao chép n ký tự từ chuỗi nguồn sang chuỗi đích.
- Độ dài chuỗi đích phải lớn hơn hoặc bằng chuỗi nguồn.
Cú pháp:
strncpy (chuoi_dich, chuoi_nguon, n);
Chương trình ví dụ
Chương trình C cho strncpy():
#includeint main(){ char a[50], b[50]; printf("Enter a string: "); gets(a); strncpy(b, a, 3); b[3] = '\0'; printf("Copied string = %s", b); return 0; }
Kết quả
Enter a string: Hello Copied string = Hel

Cũng dùng để trích xuất chuỗi con (substring).
Ví dụ 1: Trích substring
char result[10], s1[15] = "Jan 10 2010"; strncpy(result, &s1[4], 2); result[2] = '\0';
Kết quả: Result = 10

Ví dụ 2: Sao chép và nối
Chương trình C sao chép n ký tự từ nguồn sang đích dùng strncpy:
#include#include void main(){ char source[45], destination[50]; char destination1[10], destination2[10], destination3[10], destination4[10]; printf("Enter the source string: "); gets(source); strncpy(destination1, source, 2); printf("The first destination value is: "); destination1[2] = '\0'; puts(destination1); strncpy(destination2, &source[8], 1); printf("The second destination value is: "); destination2[1] = '\0'; puts(destination2); strncpy(destination3, &source[12], 1); printf("The third destination value is: "); destination3[1] = '\0'; puts(destination3); strcat(destination1, destination2); strcat(destination1, destination3); printf("The modified destination string: "); printf("%s3", destination1); }
Kết quả
Enter the source string: Tutorials Point The first destination value is: Tu The second destination value is: s The third destination value is: i The modified destination string: Tusi3