函数实现字符串的左移

编写一个函数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);
}

 

有帮忙麻烦您采纳一下