编写一个函数void shift(char*s,int n),要求将字符串s循环左移你次。例如,字符串“hello”,左移三次得到“lohel”。
#include<stdio.h>
#include<string.h>
void leftloop(char *a, int n);
int main()
{
char a[100] = "hello";
int n = 3;
leftloop(a,n);
printf("输出已经循环左移的字符串:%s\n",a);
return 0;
}
void leftloop(char*a,int n)
{
char b[100];
int m=strlen(a)-n;
strcpy(b,a+n);
strcpy(b+m,a);
*(b+strlen(a))='\0';
strcpy(a,b);
}
输出已经循环左移的字符串:lohel
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void shift(char*s,int n)
{
char *temp = (char*)malloc(n);
if(temp == NULL) return;
memcpy(temp,s,n);
memmove(s,s+n,strlen(s)-n);
memcpy(s+strlen(s)-n,temp,n);
printf("%s\n",s);
free(temp);
}
int main(void)
{
char s[]="hello";
shift(s,3);
}
有帮忙麻烦您采纳一下