Помимо проблемы strrev
, которая не является стандартной и может быть легко реализована, например,
char *strrev(char *s)
{
size_t l = strlen(s), i;
char *r = malloc(l + 1);
if ( r != NULL ) {
for(s += l-1, i=0; i < l; i++, s--) r[i] = *s;
r[i] = '\0';
}
return r;
}
просто чтобы сказать (возврат не на месте), вы должны предпочесть использование strtol
или strtoul
вместо atoi
и реализовать также itoa
, поскольку afaik также не является стандартным (вы можете использовать sprintf
в любом случае, если база 10).