One of the problems in K. N. King’s C Programming: A Modern Approach asks the reader to write a function that takes a string and, using two pointers, reverses it.
I spent about two hours fighting against this relatively simple problem. Why? Because the part of my mind that understands with pointer arithmetic wasn’t engaged. The solution is relatively simple:
// This program will reverse a string.#include <stdio.h>
#include <strings.h>int main(void) {
char str[] = "abcdefg";
char* pFirst = str;
char* pLast = pFirst + strlen(str) - 1;
char temp;while (pLast > pFirst) {
temp = *pFirst;
*pFirst++ = *pLast;
*pLast-- = temp;
}puts(str);
return 0;
}