c语言入门,求解释关于字符型变量大问题

请问像下图两种表示方式是等价的吗 ,关于getchar的原理我不太明白

img

是一样的。
getchar就是接收一个输入的字符。它只用于字符
scanf更广泛,可以用于任何数据类型的输入
对单个字符输入来说,效果是一样的

不等价
getchar()允许用户一次性输入多个字符,它每次调用会读取一个字符,你可以循环取出来
scanf()函数可以输入多种格式,但是它一下就把输入都读出来,如果没有定义对应的变量来存放,就直接丢弃了
所以当你输入一个字符的时候,两段代码看起来没啥区别。但是当你输入一大堆字符,上面的那个一瞬间就走完了,而下面的代码要求你必须输入10次,不管每次输入几个字符

两种表示方法都是一样的。因为你使用%c限制了输出内容,所以就算scanf输入字符串,也只能输出第一个字符。但是scanf可以一次性把键盘输入的东西全部读取,而getchar只能读取字符,并且一次只能从缓冲区读取一个字符,效率比较低下。希望能帮到你