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);