字符移动(指针与一维数组)

编写一个函数,函数的功能是移动字符串中的内容。移动的规则如下:把第1到第m个字符,平移到字符串的最后;再把第m+1到最后的字符移动到字符串的前部。变换后的字符串存入b数组中,如果m不在字符串长度范围,原样存入b数组中
裁判测试程序样例

img

输入样例:
在这里给出一组输入。例如:
abcefg
2
输出样例:
在这里给出相应的输出。例如:
cefgab
我的错误代码:

img


请问应该怎么改啊?谢谢
(还有就是为什么我用len

就是字符串右移指定位置呗
if(len <n)的处理肯定不对啊,你连循环都没有


#include <stdio.h>
#include <string.h>

void fun(char *pstr,int n,char *b)
{
    int len = strlen(pstr);
    if(len < n)
        strcpy(b,pstr);   //直接字符串复制就可以了
    else
    {
        int i=0;
        for(int j=n;j<len;j++)
        {
            *(b+i) = *(pstr+j);
            i++;
        }
        for(int j=0;j<n;j++)
        {
            *(b+i) = *(pstr+j);
            i++;
        }
        b[i] = 0;
    }
}
int main()
{
    char str[20],b[20];
    int m;
    gets(str);
    scanf("%d",&m);
    fun(str,m,b);
    printf("%s",b);
    return 0;
}

void func(const char *pstr,int n,char *b)
{
    strcpy(b, pstr + n);
    strncat(b, pstr, n);
}

注意:strlen只对数组,不要用于指针。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632