C, 62 58 54 bytes
Thanks to @Dennis for saving four eight bytes!
f(char*s){s[1]>32||(*s^=s[-1]^=*s^=s[-1]);*++s&&f(s);}
Thanks to @Dennis for saving four eight bytes!
f(char*s){s[1]>32||(*s^=s[-1]^=*s^=s[-1]);*++s&&f(s);}