C++实现字符串的部分复制

7 篇文章 0 订阅

实现字符串的部分复制

提示

函数 strmncpy 的原型为:

void strmncpy(char *s, int m, int n, char *t);

参数 s 指向源字符串,t 指向字符串复制的目标单元,函数功能为将 s 指向字符串从第 m 个(从0开始编号)字符开始的连续 n 个字符复制到 t 指向的存储单元;

如果第 m 个字符后面的字符数不足 n 个,则复制到 ‘\0’为止;

如果 s 的长度不到 m,则复制空串。

例如:

char *s = "abcdefghijklmn";
char t[20];
strmncpy(s,4,6,t);
cout << t << endl;

输出结果为:efghij

测试说明

测试输入:

abcdefghjkksdsd
5 7

预期输出:fghjkks

测试输入:

asdftyuioplkm
3 9
#include <iostream>
using namespace std;

void strmncpy(char* s, int m, int n, char* t);

int main()
{
    char s[128], t[128];
    int m, n;
    cin >> s;     // 输入源串
    cin >> m >> n;     // 输入m和n
    strmncpy(s, m, n, t);     // 字符串复制
    cout << t << endl;     // 输出复制结果
    return 0;
}

// 函数strmncpy:字符串的部分复制,将s指向字符串从第m个字符开始的n个字符复制的t中
// 参数:s-指向源字符串,t-指向目标字符串,m-起始位置,n-字符个数
// 返回值:无
void strmncpy(char* s, int m, int n, char* t)
{
    // 请在此添加代码,实现函数strmncpy
    /********** Begin *********/
    char* p = s;//这个用来跑
    char* q = t;//这个用来存
    int a = 0;//用于执行循环的次数
    p = p + m;//直接把地址改到目标数组的目标位置上去,最简单
    while (a < n)
    {
        *q++ = *p++;//把符合的值赋到用来存的指针这边
        a++;
    }
    *q = '\0';//结束,输出*q

    /********** End **********/
}

这是我想到最快的方法,希望我的代码可以帮到有需要的人

  • 19
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值