String reversal using recursion in C

Even-though there are more methods to do the same job, below program demonstrates 2 of it.

1) Using pointers and changing the string array

2) Simple way by printing the chars in callee .

You can use #define POINTERS 

to switch between the 2 options..

#include

#include

#include

# define MAX_SIZE 100

/* If you want to reverse the string using 2 pointers and with array,len as args using recursion, define POINTERS, otherwise comment out the POINTERS directive. */

# define POINTERS

int reverse_string(char st[], int len) {

char * p, * q, tmp; p = st; q = st + (len – 1); if (len & lt; = 0) { return; } tmp = * p; * p = * q; * q = tmp; p++; len = len – 2; reverse_string(p, len); }

int reverse_string1(char st[]) {

if ( * st != ‘\0’) reverse_string1(st + 1);

printf(” %c”, * st); }

int main() {

char * str; str = malloc(MAX_SIZE); printf(“\n Enter the string to be reversed\n”); scanf(“%s”, str); printf(“\n You entered :: %s\n”, str);# ifdef POINTERS reverse_string(str, strlen(str)); printf(“\n Reversed string :: %s\n”, str);# else reverse_string1(str); printf(“\n”);# endif

}