#include<stdio.h>
#include<string.h>
void RightLoopMove(char *pstr,unsigned short steps)
{
char pt;
int i=0;
int j=0;
int s;
int k=strlen(pstr);
for(i = 0;i < steps;j++)
{
s=k;
pt = pstr[s-1];
while(s--)
{
pstr[s] = pstr[s-1];
}
pstr[0] = pt;
}
}
int main()
{
char *str ="abcdefg";
RightLoopMove(str,2);
printf("%s\n",str);
return 0;
}
程序挂掉了,是pstr【s】 = pstr【k-1】;挂掉了,可是没有越界访问。
实在是弄不明白,所以请求大神门帮忙。
自己弄明白了,主要是char *str[]有错误,不能修改一个常量字符串的值。
修改后:
#include<stdio.h>
#include<string.h>
void RightLoopMove(char *pstr,unsigned short steps)
{
char pt;
int i=0;
int j=0;
int k=strlen(pstr);
steps %= k;
for(i = 0;i < steps;i++)
{
k=strlen(pstr);
pt = pstr[k-1];
while(k--)
{
pstr[k] = pstr[k-1];
}
pstr[0] = pt;
}
}
int main()
{
char str[] ="abcdefg";
RightLoopMove(str,1);
printf("%s\n",str);
return 0;
}