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 = %sn",str1); printf("str2 = %sn",str2); int len = strlen(str1); printf("len的长度:%dn",len); return 0; }打印结果:
代码分析:从打印结果可以看到strncat()函数在第三个参数里面追加了2个字符数,所以str1 = hello + wo。strncat()和strcat()函数都有着缓冲区溢出的问题,在使用俩者函数的时候除了要计算拼接后的字符数另外需再加1才够空间存放末尾的空字符,即str1原本的长度5 + 追加后的2个字符数 + 末尾的空字符共计8个长度。所以在开始定义str1长度的把6改成8,尽管程序在缓冲区溢出后可能不会报错,但为了程序的安全性还是严谨一点好。
以上就是strncat()函数使用方式以及说明!
完