一道填空题:移动字符串内容,传入参数char *a和m,规则如下:将a中字符串的倒数m个字符移到字符串前面,其余依次像右移。例如:ABCDEFGHI,M=3,那么移到之后就是GHIABCDEF。
注意不得修改原代码
void fun(char *w, int m)
{
int i=0; len=strlen(w);
if(m>len)
m = len;
while(__________){
_________________;
}
w[len-m] = '\0';
}
void convert(char *w, int m)
{
int i=0;
int len=strlen(w);
if(m>len)
m = len;
while(len-m > 0 || (m=0) != 0){
for(i=0,w[len]=w[0],++m;i<len;i++) w[i]=w[i+1];
}
w[len-m] = '\0';
}
int main()
{
char w[300] = {0};
strcpy(w,"ABCDEFGHI");
convert(w,3);
printf("######## w = %s\n",w);
return 0;
}
下面我自己写的一个当然感觉不满足题意了,也可以参开一下
void convert(char *w, int m)
{
char data[300];
strcpy(data,w);
int len = strlen(w);
int n = len-m;
int j = 0;
for(int i=0;i<len;i++)
{
if(i<m)
{
w[i] = data[n];
n++;
}
else
{
w[i] = data[j];
j++;
}
}
}