strncpy
是 C 語言標準庫函數之一,用于字符串操作。它的功能是將源字符串(source)中的字符復制到目標字符串(destination)中,但最多復制 n
個字符。如果源字符串的長度小于 n
,則目標字符串剩余的部分將被空字符('\0'
)填充。如果源字符串的長度大于或等于 n
,則目標字符串不會以空字符結尾。
函數原型如下:
char *strncpy(char *dest, const char *src, size_t n);
參數說明:
dest
:指向目標內存位置的指針,復制操作的結果將被存儲在這里。src
:指向源字符串的指針,這是要復制的字符串。n
:要復制的最大字符數。如果src
的長度小于n
,則dest
的剩余部分將被空字符填充;如果src
的長度大于或等于n
,則dest
不會以空字符結尾。
返回值:strncpy
函數返回一個指向目標字符串dest
的指針。
使用案例:
以下是一個使用 strncpy
函數的例子:
#include <stdio.h>
#include <string.h>
int main() {char src[] = "Hello, World!";char dest[20]; // 目標緩沖區大小為20個字符// 使用 strncpy 復制最多19個字符(留一個位置給空字符)strncpy(dest, src, sizeof(dest) - 1);// 確保目標字符串以空字符結尾dest[sizeof(dest) - 1] = '\0';printf("Copied string: %s\n", dest);return 0;
}
在這個例子中,strncpy
用于將 src
字符串復制到 dest
緩沖區中,但最多復制 sizeof(dest) - 1
個字符。由于 dest
的大小是 20 個字符,我們復制 19 個字符并手動將最后一個字符設置為空字符,以確保 dest
是一個正確終止的字符串。
輸出將會是:
Copied string: Hello, World!
注意事項:
strncpy
不會自動在目標字符串的末尾添加空字符,如果源字符串的長度等于或超過n
,則目標字符串可能不會以空字符結尾。因此,在使用strncpy
后,通常需要手動添加空字符。- 如果
n
大于源字符串的長度,strncpy
會用空字符填充目標字符串直到復制了n
個字符。 - 使用
strncpy
時應確保目標緩沖區足夠大,以避免緩沖區溢出。