一道关于字符串逆置的题目。解决方案

一道关于字符串逆置的题目。
C/C++ code

/*字符串逆置,不要用数组,库函数,以及下标访问*/
#include <stdio.h>

void reverse_string( char *str );

int main(int argc, char *argv[])
{
    char *ca = "abcdefgh";
    reverse_string( ca );
    printf("%s\n", ca);
    return 0;
}


void reverse_string( char *str)//逆置字符串 
{
    char *pc = str;
    while (*++pc!= 0);
    pc--;//指向空字符前一个字符 
    /*str向后移动,pc向前移动,且str要小于pc*/
    while (str<pc)
    {
        char temp; 
        temp = *pc;
        *pc-- = *str;
        *str++ = temp;
    }    
    
}





------解决方案--------------------
char *ca = "abcdefgh";
这个是字符串常量(字面量),对他进行修改会悲剧的..
改为:
char ca[] = "abcdefgh";