c++ char指针相关的字符处理

1.设计一个函数 通过char*的方法将一个char数组内容赋值给另一个char数组

char* Mystrcpy(char* dest, const char* src)
{
    if (dest == nullptr || src == nullptr) {
        return nullptr;
    }
    char* tmp = dest;
    while (*src != '\0')
    {
        *dest = *src;
        dest++;
        src++;
    }
    *dest = *src;
    return tmp;
}

    char arr1[] = "abc";
    char arr2[] = "1234567";
    char* p = Mystrcpy(arr1, arr2);
    char* ptrCh2 = arr1;

2.通过 char*的方法 颠倒数组

方法1 通过 char*的方法 给一个char数组赋值给另一个char数组,且字符顺序颠倒

    char test1[] = "1234";
    char* testS = test1;
    int iLen = strlen(test1);
    char* dest = (char*)malloc(iLen + 1); //合理合法的字符串最后一个字符就应该时 0x00
    dest[iLen] = 0;
    char* pDest = dest;


    char* end = test1 + iLen - 1; //重要,数组退化为指针,要获取数组中其他指针,就通过指针增加数字的方式来解决,又因为char大小为1,所以直接加iLen是没问题的


    while (iLen-- > 0) {
        *pDest++ = *end--;
    }

方法2

void swap(char* a, char* b) {
    char t = *a;
    *a = *b, * b = t;
}

void reverseString(char* s, int sSize) {
    for (int left = 0, right = sSize - 1; left < right; ++left, --right) {
        swap(s + left, s + right);
    }
}

char test1[] = "abcd";
reverseString(test1,sizeof(test1) - 1);

方法3

char* reverse(char* x)
{
    int i, tem, len = strlen(x);
    int n = len / 2;
    for (i = 0; i < n; i++)  // 前后交换数据
    {
        tem = x[i];
        x[i] = x[len - 1 - i];
        x[len - 1 - i] = tem;
    }
    return x;
}

    char test1[] = "abcde";
    char* ptrRes = reverse(test1);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值