Ciao, mi hai fatto pensare che in effetti il codice che ho scritto non era molto efficente (meglio usare i puntatori che l'accesso tramite []), quindi si può ancora fare:
codice:void invert(char *s) { if( !s ) return; char *i = s; char *ii = s; while( *ii ) ii++; ii--; while( i != ii ) { // o così *i = *i ^ *ii; *ii = *i ^ *ii; *i = *i ^ *ii; // o più chiaramente char c = *i; *i = *ii; *ii = c; i++; ii--; } }