关于编写一个C语言程序,实现以下功能

编写一个C语言程序:1、任意输入一个字符串;2、把字符串中的所有字符按照从左到右的顺序按照ASCII码的大小进行排序;3、将字符串中的所有字符依次左移,其中最左边的字符移到最右边;4、连续输出显示,要求输出跑马灯效果。

/*编写一个C语言程序:1、任意输入一个字符串;2、把字符串中的所有字符按照从左到右的顺序按照ASCII码的大小进行排序;3、将字符串中的所有字符依次左移,其中最左边的字符移到最右边;4、连续输出显示,要求输出跑马灯效果。*/

#include <stdio.h>
#include <string.h>

/*函数声明部分*/
void bubble_sort(char arr[],int n);  //冒泡函数声明
void char_left(char str[],int n);    //字符左移函数声明
int main()
{
    int i = 0;
    char str[128];
    gets(str);
    int len = strlen(str);

    //排序
    bubble_sort(str,len);
    puts(str);

    //跑步灯
    for(i=0;i<len;i++)
    {
        char_left(str,len);
        puts(str);
    }
    return 0;
}

/*函数定义部分*/
void bubble_sort(char arr[],int n)
{
    int i,j,tmp;
    for(i=0;i<n-1;i++)   //n个元素需要排n-1趟
    {
        for(j=0;j<n-1-i;j++) //每排完一趟,下次需要排的元素减1
        {
            if(arr[j]<arr[j+1]) //相邻元素比较,小于就交换位置
            {
                tmp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tmp;
            }
        }
    }
}

void char_left(char str[],int n)
{
    int i;
    int tmp = str[0];  //保存第1个元素
    for(i=1;i<n;i++)
    {
        str[i-1] = str[i];
    }
    str[n-1] = tmp;
}