c语言基础问题,不会,在线求解,急!

main函数输入一个长度小于20的字符
串,然后调用fun())函数将他逆序输
出。
注意:不是简单的逆序输出。要求内部
也要变成逆序。
举例:
输入123456A
当调用函数存储方式变为为A654321
然后将A654321输出


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fun(char str[], char ptr[]);
int main()
{
char str[20];
char ptr[20];
printf("Input a string:");
gets(str);
fun(str,ptr);
printf("Inversed results:%s\n",ptr);
}
void fun(char str[], char ptr[]){
int n=strlen(str);
int i;

for(i=0;i<=n;i++){
ptr[i]=str[n-i-1];
}
ptr[i-1]='\0';
}

reverse现成的函数
在不就用数组逆序输出

要不用现成函数的话

void fun(char* instr)
{
    size_t len = strlen(instr);
    char* outstr = (char*)malloc(len+1);
    memset(outstr,0, len + 1);
    outstr += len-1;
    while (*instr != '\0')
    {
        *outstr--=*instr++;
    }
    printf("%s\n",++outstr);
    free(outstr);
}
int main()
{
    char a[100] = "\0";
    scanf("%s", a);
    fun(a);
    
}

要用现成函数的话

int main()
{
    char a[100] = "\0";
    scanf("%s", a);
    printf("%s\n",_strrev(a));
}