为什么在程序里自己打的时候,ABC*是一起输入的,为什么不是一个一个输入,他明明用的是getchar和putchar,但一个个输入答案不对

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

递归题目是输入ABC*,问输出的结果是什么?
结果为ABC**CBA

img

getchar()函数机制
在调用getchar()函数时,编译器会依次读取用户键入缓存区的一个字符(注意这里只读取一个字符,如果缓存区有多个字符,那么将会读取上一次被读取字符的下一个字符),如果缓存区没有用户键入的字符,那么编译器会等待用户键入并回车后再执行下一步
(注意键入后的回车键也算一个字符,输出时直接换行)。
而putchar()是直接把刚刚获取的字符打印出来。所以说你这样直接把get和put连接一起写可以说有很大漏洞。
getchar()回车也算字符,然后putchar又是及时打印的。
如果用getchar还需要处理空格。
建议还是这样写

#include <stdio.h>
int main(){
    char c[5];    
    scanf("%s",&c);//获取ABC* 
    printf("%s",c);//先把ABC*打印出来 
    for(int i=3;i>=0;i--){//for循坏逐个打印*CBA(倒序) 
        printf("%c",c[i]);//注意此处为逐个输出单个字符,要用%c 
    }
    return 0; 
}

img

如果还有什么问题欢迎提出!

img