刚学函数,不是很会用,想要反向输出字符

刚学函数,不是很会用,帮帮我看看是什么问题。
这里把输入的字符反向输出,就像输入abcd,然后调用函数,最后输出dcba,我这是函数写错了还是调用不对?


#include 
using namespace std;
char fan(char a[])
{
    char ch[80];
    int i = 0;
    int j;
    while (a[i] != '\0')
        i++;
    for (j = 0;j < i;j++)
    {
        ch[j] = a[i];
        i--;
    }
    return ch[j];
}
int main()
{
    cout << "输入一串字符串" << endl;
    char ch[80];
    gets_s(ch);
    fan(ch);
    cout << "反向输出为:" << endl;
    puts(ch);
}

img


#include <iostream>
using namespace std;

void fan(char a[])
{
    char *p = a;
    char *q = a;
    while(*q != '\0')
    {
         q++;
    }
   q--;
    while(p<q)
    {
        char t = *p;
        *p = *q;
        *q = t;
        p++;
        q--;
    }
}


int main()
{
    cout << "输入一串字符串" << endl;
    char ch[80];
    gets_s(ch);
    fan(ch);
    cout << "反向输出为:" << endl;
    puts(ch);
    return 0;
}