当前位置: 代码迷 >> C语言 >> 请教字符串的移位操作
  详细解决方案

请教字符串的移位操作

热度:398   发布时间:2007-12-29 09:21:26.0
请教字符串的移位操作
对于一个字符串而言,如何进行向右或向左移位呢?我试过直接象整数那样移位,但是输出的错误的结果。
  请各位高手帮帮忙,谢谢了。
搜索更多相关的解决方案: 字符  移位  

----------------解决方案--------------------------------------------------------
道理是一样的啊 你能说个具体的例子吗
----------------解决方案--------------------------------------------------------
给一个字符串,例如"abcdefg",左移两位得到"cdefgab",
右移两位得到"fgabcde
----------------解决方案--------------------------------------------------------
这肯定不能用整数移位操作符。
自己建立一个移位函数吧。送参数两个, 一是 移位的串, 移的位数(可用正负表示左右移)
,这样一个函数不难
----------------解决方案--------------------------------------------------------
知道了,谢谢
----------------解决方案--------------------------------------------------------
我以前写了一个,看看吧。。。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
    char str[100000];
    char *s;
    int n,len,i,j;
    printf("请输入要移位的字符串\n");
    gets(str);
    printf("输入要移的位数,左移用负整数,右移用正整数表示  \n");
    scanf("%d",&n);
        len=strlen(str);
        if(n>0)              // 右移
        {   
            s=(char*)malloc((n+1)*sizeof(char));
            for(i=len-n,j=0;i<len;i++)        //要移动部分
                s[j++]=str[i];
            for(i=len-1;i>n-1;i--)
                str[i]=str[i-n];
            for(i=0;i<n;i++)
                str[i]=s[i];
        }
        else               //左移
        {   
            n=-n;
            s=(char*)malloc((n+1)*sizeof(char));
            for(i=0;i<n;i++)
                s[i]=str[i];
            for(i=0;i<len-n;i++)
                str[i]=str[i+n];
            for(i=0;i<n;i++)
                str[len-n+i]=s[i];
        }
    
     printf("%s\n",str);
     free((void*)s);
    return 1;
}
----------------解决方案--------------------------------------------------------
很好很好,学习了.
----------------解决方案--------------------------------------------------------
  相关解决方案