前言:
strcat()与strncat()函数非常相似,俩者也是仅有一字之差,多了个n。这个多出来的"n"可以理解成strncat()函数第三个参数
描述
char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。
声明
下面是 strncat() 函数的声明。
char *strncat(char *dest, const char *src, size_t n)
参数
- dest -- 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串,包括额外的空字符。
- src -- 要追加的字符串。
- n -- 要追加的最大字符数。
返回值
该函数返回一个指向最终的目标字符串 dest 的指针。
实例
下面的实例演示了 strncat() 函数的用法。
#include <stdio.h>
#include <string.h>
int main(void) {
char str1[6] = "hello";
char str2[6] = "world";
strncat(str1,str2,2);
printf("str1 = %s\n",str1);
printf("str2 = %s\n",str2);
int len = strlen(str1);
printf("len的长度:%d\n",len);
return 0;
}
打印结果:
代码分析:从打印结果可以看到strncat()函数在第三个参数里面追加了2个字符数,所以str1 = hello + wo。strncat()和strcat()函数都有着缓冲区溢出的问题,在使用俩者函数的时候除了要计算拼接后的字符数另外需再加1才够空间存放末尾的空字符,即str1原本的长度5 + 追加后的2个字符数 + 末尾的空字符共计8个长度。所以在开始定义str1长度的把6改成8,尽管程序在缓冲区溢出后可能不会报错,但为了程序的安全性还是严谨一点好。
以上就是strncat()函数使用方式以及说明!