C++高手帮小弟我看看下面的程序如何会报错啊

C++高手帮我看看下面的程序怎么会报错啊!

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

#define         ELBA         "Able   was   I   ere   I   saw   Elba "

int   main   ()
{

char   *pszElba   =   ELBA;
char         ch;

        int   x   =   0;


        int   max   =   strlen   (pszElba);
        printf   ( "%s\n ",   pszElba);
        while   (x   <   max   /   2)
        {
                ch   =   pszElba[x];
                pszElba[x]   =   pszElba[max   -   x   -   1]; //在这里报错了
                pszElba[max   -   x   -   1]   =   ch;
                ++x;
        }
        printf   ( "%s\n ",   pszElba);
        return   (0);
}


------解决方案--------------------
这是个常量字符串,只读。
------解决方案--------------------
char *pszElba = ELBA;
修改为
char pszElba[] = ELBA;
------解决方案--------------------
#include <stdio.h>
#include <string.h>

//#define ELBA "Able was I ere I saw Elba "

int main ()
{

char pszElba[] = "Able was I ere I saw Elba ";
char ch;

int x = 0;


int max = strlen (pszElba);
printf ( "%s\n ", pszElba);
while (x < max / 2)
{
ch = pszElba[x];
pszElba[x] = pszElba[max - x - 1]; //在这里报错了
pszElba[max - x - 1] = ch;
++x;
}
printf ( "%s\n ", pszElba);
return (0);
}

------解决方案--------------------
char pszElba[] = ELBA;

------解决方案--------------------
char pszElba[MAX_PATH] = ELBA;

------解决方案--------------------
ugg(逸学堂(exuetang.net)) 正解