在此代码中while中getchar的作用

char a;
a = getchar();
while(a!='\n')
{
    if((a>='a'&&a<='z') || (a>='A' && a<='Z'))
    {
        if((a>='w' && a<='z') || (a>='W' && a<='Z'))
        {
            a -= 22;
        }
        else
        {
            a += 4;
        }
        printf("%c",a);
        a = getchar();
    }
}
return 0;

}
为什么用把第一个getchar改为scanf就会乱码 while中的getchar起到了什么作用 为什么删掉他也是乱码呢 求解 谢谢各位!

getchar()可以处理一些换行回车、空格等特殊字符

不会乱码吧 就是读取一个字符的
除非你的换行或者空格之类的加4了 所以输出就会乱码了吧

参考:https://baijiahao.baidu.com/s?id=1707529359012091190
他这里的意思是输入单个字符,用着单个字符去判断!

scanf输入时,输入结束得点击回车或者空格,而回车和空格就会有缓存,下次scanf输入的就变成了回车和空格
getchar()输入就不会有缓存问题