字符串逆序(指针)c语言 代码有问题

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#include<stdio.h>
int main()
{    
    char ch[80];
    char a=getchar();
    int i=0;
    while(a!='\n')
    {
        ch[i]=a;
        a=getchar;
        
    }
    char temp;
    printf("%d",i+1);
    
    char *star=ch,*end=ch+i;
    while(star!=end)
    {
        temp=*star;
        *star=*end;
        *end=temp;
        star++;
        end--;
    }
    int b=i+1;
    for(i=0;i<b;i++)
    {
        printf("%c",ch[i]);
    }
    return 0;
 } 

第一个while循环你没有改变i的值呀,加个i++

#include <stdio.h>
#include <string.h>

#define N 256

void swap(char *a, char *b)
{
    char t = *a;
    *a = *b;
    *b = t;
}

void reverse(char *s)
{
    int n = strlen(s);
    char *p = s;
    char *q = s + n - 1;
    while (p < q)
        swap(p++, q--);
}

int main()
{
    char a[N];
    fgets(a, N, stdin);
    reverse(a);
    printf("%s", a);
    return 0;
}