当前位置: 首页 > news >正文

CExercise_09_2动态拼接字符串_1字符串拼接

题目:

标准库函数strcat会将一个字符串追加到另一个字符串的末尾。

现在我们编写一个函数把两个字符串拼接起来,返回拼接的结果,但要求不改变其中任何一个字符串。其函数声明如下:

char* my_strcat(const char* prefix, const char* suffix);
形参prefix表示前缀,suffix表示后缀,拼接的结果是prefix + suffix

比如:my_strcat(“abc”, “d”),拼接的结果是"abcd"。

思路:

在堆上分配内存空间,用于存储结果字符串。

将prefix和suffix两个字符串的字符信息复制进去


关键点


分析:


代码

// 在堆上动态分配内存拼接两个字符串
char* dynamic_strcat(const char* prefix, const char* suffix) {
    // 计算拼接后字符串的长度
    int new_str_len = strlen(prefix) + strlen(suffix);
    char *new_str = malloc(new_str_len + 1);    // char在各平台上长度都是1,所以不用乘了

    if (new_str == NULL) {
        printf("ERROR: malloc failed in dynamic_strcat!\n");
        exit(1);
    }

    // 长度是精确计算得出的,不用担心越界访问
    strcat(strcpy(new_str, prefix), suffix);

    return new_str;
}

int main(void) {
    char str1[] = "hello";
    char str2[] = " world!";
    char* result_str = dynamic_strcat(str1, str2);  // 注意只要涉及动态内存分配,一律用指针类型。这里不能用数组类型

    puts(result_str);

    // 现在不再使用result字符串了,不要忘记free它
    free(result_str);

    return 0;
}
	

解决方案总结:

相关文章:

  • 网页设计师月薪多少优化公司怎么优化网站的
  • 网站建设空间域名是什么资源网
  • 医疗美容网站建设seo基础入门视频教程
  • 新桥做网站公司万网域名注册流程
  • 北京的做网站公司2345网址导航官网
  • 网站app封装怎么做济南计算机培训机构哪个最好
  • 图像处理中的梯度计算、边缘检测与凸包特征分析技术详解
  • 衣橱管理助手系统(衣服推荐系统)(springboot+ssm+vue+mysql)含运行文档
  • Spark-SQL 之 Window
  • 算法题型讲解
  • Ubuntu安装Docker引擎
  • SD + Contronet,扩散模型V1.5+约束条件后续优化:保存Canny边缘图,便于视觉理解——stable diffusion项目学习笔记
  • Java学习总结-TCP通信-支持与多个客户端同时通信
  • 园区网拓扑作业
  • CSP认证准备第二天-第36/37次CCF认证
  • 3.IS-IS认证
  • 2143 最少刷题数
  • 【MySQL 删除数据详解】
  • H.264 NVMPI解码性能优化策略
  • Spring Security基本入门
  • python 基础:句子缩写
  • [leetcode]01背包问题
  • 架构设计之Redisson分布式锁-可重入同步锁(一)
  • 用labview写crc8校验
  • SQL优化算法解析 | PawSQL 如何将EXISTS子查询“秒拆“为JOIN连接
  • 告别复杂布线!PLC无线以太网互联的终极解决方案