编写一个函数,函数的功能是移动字符串中的内容。移动的规则如下:把第1到第m个字符,平移到字符串的最后;再把第m+1到最后的字符移动到字符串的前部。变换后的字符串存入b数组中,如果m不在字符串长度范围,原样存入b数组中
裁判测试程序样例
输入样例:
在这里给出一组输入。例如:
abcefg
2
输出样例:
在这里给出相应的输出。例如:
cefgab
我的错误代码:
就是字符串右移指定位置呗
if(len <n)的处理肯定不对啊,你连循环都没有
#include <stdio.h>
#include <string.h>
void fun(char *pstr,int n,char *b)
{
int len = strlen(pstr);
if(len < n)
strcpy(b,pstr); //直接字符串复制就可以了
else
{
int i=0;
for(int j=n;j<len;j++)
{
*(b+i) = *(pstr+j);
i++;
}
for(int j=0;j<n;j++)
{
*(b+i) = *(pstr+j);
i++;
}
b[i] = 0;
}
}
int main()
{
char str[20],b[20];
int m;
gets(str);
scanf("%d",&m);
fun(str,m,b);
printf("%s",b);
return 0;
}
void func(const char *pstr,int n,char *b)
{
strcpy(b, pstr + n);
strncat(b, pstr, n);
}
注意:strlen只对数组,不要用于指针。