char *strncat(char *dest, const char *src, size_t n);
所需頭文件:<string.h>
strncat 用於將源字符串 src 的前 n 個字符追加到目標字符串 dest 的末尾,並自動在結果後添加空字符 '\0'。這與 strcat 不同,後者會拼接整個源字符串,而 strncat 允許精確控制拼接長度,避免緩衝區溢出風險。
src 和 dest 指向的內存區域不能重疊,否則行為未定義。dest 必須預留足夠空間容納原內容 + n 個字符 + 結束符 '\0'。dest 的指針,便於鏈式調用。#include <stdio.h>
#include <string.h>
int main(void) {
char dest[50] = "Hello, ";
const char *src = "World! Welcome to C programming.";
// 僅拼接前 6 個字符:"World!"
strncat(dest, src, 6);
printf("結果: %s\n", dest); // 輸出: Hello, World!
return 0;
}
初學者常誤以為 n 包含結束符,實際上 n 僅限制從 src 複製的字符數,結束符由函數自動追加。若 src 長度小於 n,則按實際長度拼接(相當於 strcat)。
安全替代方案:現代 C 開發建議使用 strncat_s (C11 Annex K) 或 strlcat (BSD) 等更安全的版本,它們顯式接收目標緩衝區大小參數。