progtwig para revertir una cadena

Soy un principiante en C. Estaba intentando este progtwig para revertir una cadena. ¿Alguna ayuda que está mal con eso?

#include #include char *reverse(char *); void main() { char str[]="kundan"; int len=strlen(str); char *ptr; ptr=reverse(str); printf("the reversed string is :%s",ptr); } char *reverse(str) { char *rtr=str; char qtr[10]; for(int i=len-1;i<=0;i--) { qtr=rtr+i; qtr++; } return qtr; } 

No estás respetando el scope variable. Una referencia útil sobre esto, aquí .

Por ejemplo, en reverse() , se refiere a len en el bucle for . Sin embargo, len se define en main y, por lo tanto, no está disponible para reverse() . (¿Esto incluso comstack?)

El valor que está devolviendo de reverse() es un puntero a un valor de stack que solo está dentro del scope de esa función. Si bien la función de llamada, main() , terminará con un puntero válido, la información a la que se refiere el puntero se ha salido del scope cuando se devuelve reverse() y, por lo tanto, es volátil y está sujeta a cambios. Para este ejemplo simple, podría devolver la cadena invertida por valor, en lugar de por referencia. (Devuelva la matriz de caracteres, no un puntero a ellos).