scanf 和 cin 的区别?
#include "iostream.h"
#include "stdio.h"
void add(){cout<<"add\n";}
void erase(){cout<<"erase\n";}
void modify(){cout<<"modify\n";}
void printsalary(){cout<<"printsalary\n";}
void printreport(){cout<<"printreport\n";}
int main(int argc, char* argv[])
{
int select = 0;
void (*func[6])() = {NULL,add,erase,modify,printsalary,printreport};
while (1)
{
cout<<"1--add\n";
cout<<"2--erase\n";
cout<<"3--modify\n";
cout<<"4--printsalary\n";
cout<<"5--printreport\n";
cout<<"0--quit\n";
scanf("%d",&select);//这行代码出了问题???
//cin>>select; //用cin就正常
if (select == 0) return 0;
if (select > 5)
{
cout<<"input error\n";
}
else
func[select]();
}
return 0;
}
上面的代码 为什么用cin>>select; 就能正常使用,cout首先正常打印,然后让用户输入select 的值;
但是如果用scanf("%d",&select); 就卡住了 ,不打印也不做任何操作,用户可以输入值但是没有反应;
那位高手可以指点一下,究竟是为什么呀???
[解决办法]
scanf缓存区默认将回车键也作为用户的输入了