Reversing a string in place without using iteration in C
There is a bug. Some teststring contains an odd number of characters, therefore a left == right condition is eventually hit. For an even-length string, it would never be satisfied. You should test for left &lt; right instead.
There is absolutely no need to reassign left, right to ll, rr. revert(++left, --right) works as good.

To clear the possible confusion (see comments) this is what I meant:

if (left &lt; right) {
    swap_values(left, right);
    revert(++left, --right);
}