总结了一下,发现buffer对scanf中标准输入影响较大的是scanf(%c)也就是字符的标准输入;
标准输入 eg. scanf("%s") . scanf("%d") 等都会在输入时先判断缓存区buffer中的数据是否是指定类型,如果不是,则要求输入;
而scanf("%c") 虽然也会判断,只是不论是空格合适回车,在buffer中的保存形式都是ascll码,所以,只要buffer中有值,一般都会直接赋给%c了,而不会再要求输入;
又因为,scanf 时,会将空格或者是回车读入buffer中;
所以,如%c是紧接在其他scanf的后面,那么就会使输入进字符中的是空格或者回车而不是想要的。
所以一般%c前面如果有其他的scanf,那么会多一个%c,使buffer中的空格或者回车先去掉。
而cin不会出现这样的问题,不会使回车或者空格放在buffer中,这也就是gets()与scanf(%s)之间的区别。