C语言/C++字符串拼接函数strcat使用及实现

1,字符串拼接函数strcat的原型

char *strcat( char *dest, const char *src );

参数

dest-指向要后附到的空终止字节字符串的指针
src-指向作为复制来源的空终止字节字符串的指针

返回值

1) 返回 dest 的副本。

2) 成功时返回零。错误时返回非零。错误时,亦写入零到 dest[0] (除非 dest 为空指针,或 destsz 为零或大于 RSIZE_MAX )。

作用详解:后附 src 所指向的空终止字节字符串的副本到 dest 所指向的空终止字节字符串的结尾。字符 src[0] 替换 dest 末尾的空终止符。产生的字节字符串是空终止的。若目标数组对于 src 和 dest 的内容以及空终止符不够大,则行为未定义。若字符串重叠,则行为未定义。若 dest 或 src 不是指向空终止字节字符串的指针,则行为未定义。

2,自己实现strcat拼接函数

#include <iostream>

using namespace std;
char* myStrcat(char* dest, const char* src) {
    // 找到目标字符串的末尾
    char* destEnd = dest;
    while (*destEnd != '\0') {
        ++destEnd;
    }

    // 逐个复制源字符串的字符到目标字符串的末尾
    while (*src != '\0') {
        *destEnd = *src;
        ++destEnd;
        ++src;
    }

    // 添加 null 终止符
    *destEnd = '\0';

    return dest;
}

int main() {
    const int bufferSize = 100;
    char str1[bufferSize] = "Hello, ";
    const char* str2 = "world!";

    cout << "Before strcat: " << str1 << endl;

    // 调用自己实现的strcat函数
    myStrcat(str1, str2);

    cout << "After strcat: " << str1 << endl;

    return 0;
}

这段代码实现了一个简单的myStrcat函数,用于将源字符串连接到目标字符串的末尾。以下是对代码的详细解析:

  1. myStrcat函数定义:

    char* myStrcat(char* dest, const char* src) {
    • 函数名:myStrcat
    • 参数:
      • dest:目标字符串的地址,这是一个字符数组,用于存储连接后的结果。
      • src:源字符串的地址,这是一个常量字符数组,即要连接到目标字符串的字符串。
  2. 找到目标字符串的末尾:

    char* destEnd = dest; while (*destEnd != '\0') { ++destEnd; }
    • 使用destEnd指针遍历目标字符串,直到遇到 null 终止符,即字符串的末尾。
  3. 逐个复制源字符串的字符到目标字符串的末尾:

    while (*src != '\0') { *destEnd = *src; ++destEnd; ++src; }
    • 使用destEnd指针将源字符串的字符逐个复制到目标字符串的末尾。
    • 每次复制后,递增destEndsrc指针,移动到下一个字符。
  4. 添加 null 终止符,然后返回目标字符串的地址:

    *destEnd = '\0';
    return dest;
    • 在连接后的字符串的末尾添加 null 终止符,确保字符串的正确结束。
    • 返回目标字符串的地址,以便在调用函数的地方使用连接后的字符串。
  5. main函数中的示例:

    int main() {
        const int bufferSize = 100;
        char str1[bufferSize] = "Hello, ";
        const char* str2 = "world!";
    
        cout << "Before strcat: " << str1 << endl;
    
        // 调用自己实现的strcat函数
        myStrcat(str1, str2);
    
        cout << "After strcat: " << str1 << endl;
    
        return 0;
    }
    • 创建一个大小为100的字符数组str1,并初始化为 "Hello, "。
    • 创建一个指向常量字符数组的指针str2,指向 "world!"。
    • 输出连接前的字符串。
    • 调用myStrcat函数将str2连接到str1的末尾。
    • 输出连接后的字符串。

最后总结:在这个例子中,myStrcat函数接受两个参数:目标字符串dest和源字符串src。函数通过找到目标字符串的末尾,然后逐个复制源字符串的字符到目标字符串的末尾,最后在目标字符串的末尾添加 null 终止符。在main函数中,我们演示了如何使用这个自己实现的myStrcat函数。

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值