logo
Jiff Slater
🤔 About
✍️ Contact
📚Knowledge
03 Dec 2020
 

A tired mind cannot comprehend pointer arithmetic
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;
}