此程序是如何运行的,运行结果是什么

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

```c

(2) 
#include<stdio.h>
#include<string.h>
void test(char *str,int n)
{
    char temp;
    int i;
    temp=*(str+n-1);
    for(i=n-1;i>0;i- -)
        *(str+i)=*(str+i-1);
    *str=temp;
}
void main()
{
    char *s="abcde";     //或 char a[]="abcde",*s=a;
    int i,n=3,len;
    len=strlen(s);    
        for(i=1;i<=n;i++)
        test(s,len);
    puts(s);
}


###### 运行结果及报错内容 

###### 我的解答思路和尝试过的方法 

###### 我想要达到的结果

最终结果是:cdeab
test()函数的功能是,每次把字符串最末的字符移到字符串的第一个。主函数里for(i=1;i<=n=3;i++) ,循环三次,调用test()函数三次,第一次结束 eabcd ,第二次 deabc,第三次 cdeab.