int main() { printf("str = "); char* str = console_read_line(20, 100); printf("reverse = %s\n", r_reverse(str, strlen(str), 0)); free(str); return 0; }
char* r_reverse(char* str, int len, int i) { if (i >= len / 2) return str; swap_char(&str[i], &str[len - i - 1]); return r_reverse(str, len, i + 1); }
/* r_reverse: recursive helper */ void r_reverse(char s[], int left, int right) { int tmp; if (left >= right) return; tmp = s[left]; s[left] = s[right]; s[right] = tmp; r_reverse(s, left+1, right-1); }
/* reverse: reverse s in place */ void reverse(char s[]) { r_reverse(s, 0, strlen(s)-1); }