#include // for malloc() #include // for strlen() #include // for assert() int ReverseString(char *in, char **out) { // defensive programming assert(in != NULL); assert(out != NULL); // allocate space for the new string int len = strlen(in), i; char *ret = (char *) malloc((len+1) * sizeof(char)); if (ret == 0) return 0; // copy, but in reverse order for (i = 0; i < len; i++) ret[(len-1) - i] = in[i]; // null terminate ret[len] = '\0'; // return our output *out = ret; return 1; }