码迷,mamicode.com
首页 > 编程语言 > 详细

【C语言】字符串右循环移位

时间:2015-06-13 14:18:17      阅读:368      评论:0      收藏:0      [点我收藏+]

标签:


比如:“abcdefghi”循环右移2位就是:“hiabcdefg”

给定函数原型:void RightLoopMove(char *pStr,unsigned short steps)


方法一:首先将最后面一个字符赋给临时变量,再将前面字符依次往后挪动一个位置,最后把临时变量赋给第一个字符。


#include <stdio.h>
#include <string.h>
void RightLoopMove(char *pStr, unsigned short steps)
{
    char *l = pStr;
    char *r = pStr + strlen(pStr) - 1;
    while (steps)
    {
        char tmp = *r;
        char *p = r;
        while (p > l)
        {
            *p = *(p - 1);
            p--;
        }
        *l = tmp;
        steps--;
    }
}
int main()
{
    char a[] = "abcdefghi";
    RightLoopMove(a,2);
    printf("%s\n", a);
    return 0;
}

方法二:三次翻转字符串


#include <stdio.h>
#include <string.h>
void reverse(char *l, char *r)
{
    while (l < r)
    {
        char tmp = *l;
        *l = *r;
        *r = tmp;
        l++;
        r--;
    }
}
void RightLoopMove(char *pStr, unsigned short steps)
{
    int n = strlen(pStr);
    reverse(pStr, pStr+n-steps-1);
    reverse(pStr + n - steps,pStr+n-1);
    reverse(pStr,pStr+n-1);
}
int main()
{
    char a[] = "abcdefghi";
    RightLoopMove(a,2);
    printf("%s\n", a);
    return 0;
}

技术分享


【C语言】字符串右循环移位

标签:

原文地址:http://blog.csdn.net/sulijuan66/article/details/46482127

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!