c语言关于scanf与getchar的问题

在while循环的判断中用while ((order=getchar())!='q')输入q会直接跳过while循环
但用while (scanf("%c",order)!='q')输入q仍会进行循环

scanf的返回值不是你给他赋的值呀。
第一个getchar,你接收了一个字符,然后你把它赋值给了order,然后判断呀。
第二个scanf,你接收了一个字符,把他给了order。
但你并不是order和q判断呀,你是scanf这个方法的返回值和q判断呀!而scanf的返回值是整数和EOF哇,当然不等于q。
有帮助的话采纳一下哦!

scanf和getchar()都是要回车确定,scanf输入会有缓冲区,所以你输入了q之后回车,最后录入的值是回车的值;getchar()没有缓冲区,所以你输入了q之和回车就只是q的值
scanf是不会过滤掉回车这个值的,所以你输入q再回车后会把你前面输入的q的值冲掉
getchar()当你输入q之后再回车是会把回车的值过滤掉,所以你输入的q还是q不会被回车冲掉
如果对你有帮助希望采纳