Tech Journal Back to Tech Journal

C Riddle: Printing a read-only string in reverse using recursion...

(Actually, the fact that the string is read-only was not specified as part of the riddle.)

Here's an incomplete program:

void rev(char *s);

int main() {
   char *str = "hello";
   rev(str);
}

write the function rev() so that it recursivly calls itself to print the string in reverse.

Solution:

There's a 'gotcha' here. You can't modify the string, since it's a string constant, and therefore may be allocated within read-only memory. (Personally, I don't like modifying paramaters, unless that is the purpose of the function). My solution is therefore:

void rev(char *s) {
 if *(s+1) rev(s+1);
 printf("%c", *s);
}
Last updated on 2005-08-03 14:00:00 -0700, by Shalom Craimer

Back to Tech Journal