diff options
Diffstat (limited to '4/13.c')
| -rw-r--r-- | 4/13.c | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -0,0 +1,32 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#define MAXLEN 1000 + +/* Reverses string in place using recursion */ +void reverse(char[], int, int); + +int main(int argc, char *argv[]) { + char *s; + size_t n; + + s = malloc(MAXLEN); + n = sizeof(s); + + getline(&s, &n, stdin); + reverse(s, 0, strlen(s) - 2); + printf("\t%s\n", s); + + free(s); + return 0; +} + +void reverse(char s[], int i, int j) { + if (i < j) { + reverse(s, i + 1, j - 1); + s[i] = s[i] ^ s[j]; + s[j] = s[i] ^ s[j]; + s[i] = s[i] ^ s[j]; + } +}
\ No newline at end of file |
