关于#c语言#的问题:控制台输入一个字符串,要求保留字符串的后半段,前半段做成后半段的镜像

这个怎么打啊 朋友们

控制台输入一个字符串,要求保留字符串的后半段,前半段做成后半段的镜像。例如,123456,处理成654456,要用m e m m o v e 或者m e m c p y

供参考:

#include <stdio.h>
#include <string.h>
int main()
{
    int  n ,i;
    char str[128];
    scanf("%s", str);
    n = strlen(str);
    for (i = 0;i < n/2; i++)
        memmove(str+i,str+n-1-i,1);
    printf("%s",str);
    return 0;
}


#include<stdio.h>
#include<string.h>
void swap(char* a, char* b)
{
    char tmp = *a;
    *a = *b;
    *b = tmp;
}
void reverse(char* arr, int start, int end)
{
    while (start < end)
    {
        swap(&arr[start], &arr[end]);
        start++;
        end--;
    }
}
int main()
{
    char arr[100] = { 0 };
    //123456
    gets(arr);
    int len = strlen(arr);
    if (len % 2 == 0)
    {
        int move = len / 2;
        //拷贝后面的内容
        memmove(arr,arr+move,move);
        //将内容交换
        reverse(arr, 0, move-1);
        
    }
    else
    {
        int move = len / 2;
        memmove(arr, arr + move+1, move);
        reverse(arr, 0, move-1);
    }
    printf("%s", arr);
}

这哪用的到你说的函数呢???