#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* string_reverse_aux(char* s1, char* s2, size_t count, size_t length) {
if (count == length) {
s2[count] = '\0';
return s2;
} else {
s2[count] = s1[length - 1 - count];
return string_reverse_aux(s1, s2, count + 1, length);
}
}
char* string_reverse(char* s) {
char* _s
= (char*)malloc(sizeof(char) * (n
+ 1)); return string_reverse_aux(s, _s, 0, n);
}
int main(void) {
char* s = "abcdefgh";
printf("%s\n%s\n", s
, string_reverse
(s
)); return EXIT_SUCCESS;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKY2hhciogc3RyaW5nX3JldmVyc2VfYXV4KGNoYXIqIHMxLCBjaGFyKiBzMiwgc2l6ZV90IGNvdW50LCBzaXplX3QgbGVuZ3RoKSB7CiAgaWYgKGNvdW50ID09IGxlbmd0aCkgewogICAgczJbY291bnRdID0gJ1wwJzsKICAgIHJldHVybiBzMjsKICB9IGVsc2UgewogICAgczJbY291bnRdID0gczFbbGVuZ3RoIC0gMSAtIGNvdW50XTsKICAgIHJldHVybiBzdHJpbmdfcmV2ZXJzZV9hdXgoczEsIHMyLCBjb3VudCArIDEsIGxlbmd0aCk7CiAgfQp9CgpjaGFyKiBzdHJpbmdfcmV2ZXJzZShjaGFyKiBzKSB7CiAgaW50IG4gPSBzdHJsZW4ocyk7CiAgY2hhciogX3MgPSAoY2hhciopbWFsbG9jKHNpemVvZihjaGFyKSAqIChuICsgMSkpOwogIHJldHVybiBzdHJpbmdfcmV2ZXJzZV9hdXgocywgX3MsIDAsIG4pOwp9CgppbnQgbWFpbih2b2lkKSB7CiAgY2hhciogcyA9ICJhYmNkZWZnaCI7CiAgcHJpbnRmKCIlc1xuJXNcbiIsIHMsIHN0cmluZ19yZXZlcnNlKHMpKTsKICByZXR1cm4gRVhJVF9TVUNDRVNTOwp9Cg==