标题:请教字符串的移位操作
只看楼主
xiaxin
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-10-21
 问题点数:0 回复次数:7 
请教字符串的移位操作
对于一个字符串而言,如何进行向右或向左移位呢?我试过直接象整数那样移位,但是输出的错误的结果。
  请各位高手帮帮忙,谢谢了。
搜索更多相关主题的帖子: 字符 移位 
2007-12-29 09:21
nianshi
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2007-11-7
得分:0 
道理是一样的啊 你能说个具体的例子吗

行至水穷处 坐看去起时
C语言QQ群1:51871776  群2:26313099  群3:47145282
2007-12-29 09:26
xiaxin
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-10-21
得分:0 
给一个字符串,例如"abcdefg",左移两位得到"cdefgab",
右移两位得到"fgabcde
2007-12-29 09:35
龙=虾
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-12-26
得分:0 
这肯定不能用整数移位操作符。
自己建立一个移位函数吧。送参数两个, 一是 移位的串, 移的位数(可用正负表示左右移)
,这样一个函数不难
2007-12-29 09:46
xiaxin
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-10-21
得分:0 
知道了,谢谢
2007-12-29 10:46
布拉莫斯
Rank: 1
来 自:中国太平洋舰队
等 级:新手上路
帖 子:169
专家分:0
注 册:2007-3-31
得分:0 
我以前写了一个,看看吧。。。

#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;
}

strmove.JPG (11.69 KB)

真理往往掌握在少数人手中,可现实却是少数服从多数!
2007-12-29 12:41
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
得分:0 
很好很好,学习了.
2007-12-29 15:46
英雄联盟玩家
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-3-30
得分:0 
这不是交换吗??
2015-04-11 16:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-194920-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023406 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved