From b392ca9be3da36620092f33e055e59b2f8da6c54 Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Sun, 26 Dec 2021 12:42:14 +0800 Subject: 4.13 --- 4/13.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 4/13.c (limited to '4') diff --git a/4/13.c b/4/13.c new file mode 100644 index 0000000..cc359aa --- /dev/null +++ b/4/13.c @@ -0,0 +1,32 @@ +#include +#include +#include + +#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 -- cgit v1.2.3