一个字符串反转的小程序解决方案

一个字符串反转的小程序#includestdio.hvoid reverse_str(char* buf, int n)void main(){char* aabcd

一个字符串反转的小程序
#include<stdio.h>
void reverse_str(char* buf, int n);
void main()
{
  char* a="abcde";
  reverse_str(a,5);
  printf("%s\n",a);
}
void reverse_str(char* buf, int n)
{
  char tmp= buf[0];
  if(n<2)
  return;
  buf[0] = buf[n-1];
  buf[n-1] =tmp; 
  reverse_str(buf++,n--);
}

程序想要实现“abcde”变为“edcba”
编译可以通过,执行却有问题,求助大侠~

[解决办法]
还是错了,应该这样子:

C/C++ code
#include<stdio.h>void reverse_str(char* buf, int n);void main(){  char a[]="abcde";  reverse_str(a,5);  printf("%s\n",a);}void reverse_str(char* buf, int n){  char tmp= buf[0];  if(n<2)  return;  buf[0] = buf[n-1];  buf[n-1] =tmp;    reverse_str(++buf,n-2);}