基础知识:
scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。
其调用格式为: scanf("<格式化字符串>",<地址表>);
解释原因:
scanf在每次回车之后从缓冲区中读取用户输入的字符,且当缓冲区非空时,输入回车之后才会自动结束。
当按照scanf("%c\n", &m)这种形式书写时,相当于你输入结束之后,缓冲区的数据被立即读取且被清空,缓冲区为空,scanf不退出,当你再输入一个字符后,缓冲区不空,再次回车后scanf退出。而变量的值,是你第一次输入的值。
例子说明:
scanf("\n%c", &m);//先刷新缓冲区,输入一次即可
scanf("%c\n", &m);//输入一次即可,刷新缓冲区,再输入一次,缓冲区不为空,退出
scanf("%c\n\n", &m);//输入一次即可,刷新缓冲区,刷新缓冲区,再输入一次,缓冲区不为空,退出
参考链接:
http://blog.csdn.net/mdx20072419/article/details/8543388 (参看最后一个Demo)