请教字符串的移位操作
对于一个字符串而言,如何进行向右或向左移位呢?我试过直接象整数那样移位,但是输出的错误的结果。请各位高手帮帮忙,谢谢了。
----------------解决方案--------------------------------------------------------
道理是一样的啊 你能说个具体的例子吗
----------------解决方案--------------------------------------------------------
给一个字符串,例如"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;
}
----------------解决方案--------------------------------------------------------
很好很好,学习了.
----------------解决方案--------------------------------------------------------