Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C编写一个向左旋转(char*)函数_C - Fatal编程技术网

用C编写一个向左旋转(char*)函数

用C编写一个向左旋转(char*)函数,c,C,我们如何编写一个rotate_left(char*)函数,该函数接受以null结尾的字符串并将其向左旋转一个字符。例如:“abcdef”->“bcdefa” 到目前为止,我已经: rotate_left(char* str){ int i, lin; char buff[lin+1], temp; lin = strlen(str); strcpy(buff,str); } 有人能帮我完成这个功能吗。非常感谢。char last=str[0]; char l

我们如何编写一个rotate_left(char*)函数,该函数接受以null结尾的字符串并将其向左旋转一个字符。例如:“abcdef”->“bcdefa”

到目前为止,我已经:

 rotate_left(char* str){
  int i, lin;
   char buff[lin+1], temp;

   lin = strlen(str);
   strcpy(buff,str);




 }
有人能帮我完成这个功能吗。非常感谢。

char last=str[0];
char last = str[0];
int len = strlen(str);

for(i=0; i< len-1; i++) { str[i] = str[i+1]; }
str[len-1] = last;
int len=strlen(str); 对于(i=0;i
我想我不会使用太多的问题代码。以下是另一种解决方案:

rotate_left(char* str){
   char ch;
1) 存储将从左侧旋转到右侧的字符

   ch=*str;
2) 将字符串中的所有字符左移一个字节

   memmove(str, str+1, strlen(str)-1);
3) 将旋转后的字符复制到“str”的末尾

   str[strlen(str)] = ch;
   }

您可以在适当的位置进行旋转,如下所示:

char * rotate_left1 (char *str) {
    char ch;
    int i;

    ch = str[0];
    for (i = 0; str[i+1]; i++) {
        str[i] = str[i+1];
    }
    str[i] = ch;

    return str;
}

首先,在使用
lin
之前,您不需要为其赋值。