首页 > 编程知识 正文

c语言危险函数strncat,C语言strcat函数

时间:2023-05-04 12:42:26 阅读:265421 作者:2732

前言:

            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()函数使用方式以及说明!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。