6-3 字符移动 (12 分)

本文介绍了一个用于移动字符串内容的函数实现方法。该函数能够根据指定的位置m,将字符串分为两部分并重新组合,使得第1到第m个字符被移动到字符串末尾,而第m+1到最后的字符则被移动到字符串的开始位置。文章提供了完整的代码示例及测试案例。

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

函数接口定义:


在这里描述函数接口。例如: void fun(char *pstr,int n,char *b);

裁判测试程序样例:


在这里给出函数被调用进行测试的例子。例如: #include <stdio.h> #include <string.h> void fun(char *pstr,int n,char *b); int main() { char str[20],b[20]; int m; gets(str); scanf("%d",&m); fun(str,m,b); printf("%s",b); return 0; } /* 请在这里填写答案 */

输入样例:

在这里给出一组输入。例如:

abcefg
2

输出样例:

在这里给出相应的输出。例如:

cefgab
void fun(char *pstr,int n,char *b)
{
    if(strlen(pstr)<n)
    {
        strcpy(b,pstr);
        return;
    }    
    int i=0;
    while(*(pstr+n+i)!='\0')
    {
        *b=*(pstr+n+i);
        i++;
        b++;
    }
    i=0;
    while(i<n)
    {
        *b=*(pstr+i);
        i++;
        b++;
    }
    *b='\0';
}    

 可以分两步走:第一步先将后几位赋过去(这里是字符串,复制要用到函数),第二步再从第一位赋过去。分别用两个循环,注意还有一个特殊情况就是数字过大,原样复制(可放在最前先判断)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值