昨天用C编程遇到一个关于scanf的细節问题,假如运行如下程序:
表面上看这段程序是没有错的也可以运行,但运行过程中到第二个scanf输入值给ch2时程序不会停止,而是直接運行到最后一个printf !
为什么当时百思不得其解。。
今天上网查了下才知道原来scanf是从标准输入缓冲区中读取输入的数据,而%c的字符输入格式会接收回车字符在输入第一个scanf时输入字符后按 回车结束,输入缓冲中保存了这个回车符遇到第二个scanf时,它自动把这个回车符赋给叻ch2而如果第二个scanf的输入格式不是%c时,由于格 式不匹配这个回车符会被自动忽略,所以只有在连续输入两个%c的格式时才会出现这样的问題!
scanf格式输入时要求输入格式与格式控制符中的完全一样(如:scanf("abcd%c",&ch);输入时必须输入abcde,ch得到的值为e)空格可以抵消前面输入的回车符