开发者社区> 问答> 正文

C语言中连接两个字符串的方法都有哪些

C语言中连接两个字符串的方法都有哪些

展开
收起
a123456678 2016-06-03 08:32:39 4032 0
7 条回答
写回答
取消 提交回答
  • strcat 或者 手动memcpy到新的buffer

    2020-03-17 17:00:52
    赞同 展开评论 打赏
  • 操作内存,手动copy

    2020-03-17 10:58:02
    赞同 展开评论 打赏
  • 专注物联网

    strcat_s
    char szBuf[3] = {0};
    strcat_s(szBuf, 3, "kdfdfj"); // 第一种连接字符串方法
    strcat(szBuf, "kdfdfj"); // 第二种连接字符串方法
    对于这两个例句,你仔细看就会发现他们有缓冲区溢出的问题.
    而用第一个函数则不同,它会抛出一个异常。
    但使用第二个函数的结果则不能确定,因为它可能会错误地改变了程序中其他部分的内存的数据,有可能不会抛出异常,但会导致程序数据错误,也可能由于非法内存访问抛出异常

    2019-07-17 19:25:47
    赞同 展开评论 打赏
  • 软件开发,安全加密

    strcat
    strcat_s
    char szBuf[3] = {0};
    strcat_s(szBuf, 3, "kdfdfj"); // 第一种连接字符串方法
    strcat(szBuf, "kdfdfj"); // 第二种连接字符串方法
    对于这两个例句,你仔细看就会发现他们有缓冲区溢出的问题.
    而用第一个函数则不同,它会抛出一个异常。
    但使用第二个函数的结果则不能确定,因为它可能会错误地改变了程序中其他部分的内存的数据,有可能不会抛出异常,但会导致程序数据错误,也可能由于非法内存访问抛出异常

    2019-07-17 19:25:47
    赞同 展开评论 打赏
  • 乐于学习与分析

    strcat
    strcat_s
    char szBuf[3] = {0};
    strcat_s(szBuf, 3, "kdfdfj"); // 第一种连接字符串方法
    strcat(szBuf, "kdfdfj"); // 第二种连接字符串方法
    对于这两个例句,你仔细看就会发现他们有缓冲区溢出的问题.
    而用第一个函数则不同,它会抛出一个异常。
    但使用第二个函数的结果则不能确定,因为它可能会错误地改变了程序中其他部分的内存的数据,有可能不会抛出异常,但会导致程序数据错误,也可能由于非法内存访问抛出异常

    2019-07-17 19:25:47
    赞同 展开评论 打赏
  • 必须提一提 strcat 函数了。

    include

    char strcat( char str1, const char *str2 );
    功能:函数将字符串str2 连接到str1的末端,并返回指针str1
    str1 和 str2 不能 overlap,同时,必须保证 str1 有足够的空间

    2019-07-17 19:25:47
    赞同 展开评论 打赏
  • include <stdio.h>
    include <string.h>
    void strlink(char *lhs, const char *rhs)
    {
    while(*lhs != '\0')
    {
    ++ lhs;
    }
    while(*rhs != '\0')
    {
    
    lhs++ = *rhs ++;
    }
    
    lhs = *rhs;
    }
    
    void main()
    {
    char *result = new char[20];
    strcpy(result, "hello_");
    strlink(result, "world");
    printf("%s\n", result);
    delete []result;
    }
    2019-07-17 19:25:46
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载