A tired mind cannot comprehend pointer arithmetic
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. […]
15 June 2009

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;
}