当我们需要通过程序向用户获取一个字符命令时,我们可以这样做:
scanf("%c",&ch);
getchar();
后一句的作用是吃掉上一句在IO遗留下来的回车,不然下一次再执行这个语句时,就会首先读取到回车符,而非是用户输入的字符。
下面再来讨论以下scanf函数与几个其他IO函数的区别:
读取字符时:
scanf()以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中);
getchar()以Enter结束输入,也不会舍弃最后的回车符;
读取字符串时:
scanf()以Space、Enter、Tab结束一次输入
gets()以Enter结束输入(空格不结束),接受空格,会舍弃最后的回车符!
当然还有清空缓存区的函数fflush(stdin),执行后缓存区会自动清空。