- 论坛徽章:
- 0
|
新手提问:怎么用gets()只取Int值?
至于不用scanf的理由是他对数据格式化的处理不严格,往往由于你没有太关心你的格式导致了,想不到的错误
结果就大出意料了,而看这结果解释为什么也不是很容易的,必须熟悉scanf()函数的源代码因为真正错的地方可能是在硬件中断时候对于缓冲区处理问题(有没有清空还是忽略的 --知识猜测);;
所以很多人都捧cin 比scanf多好多好的
有没有搞错啊,你什么硬件中断,不要瞎猜!!
scanf有个地方大概这样
如果fmt有个%d,那么从stdin取字符必须是shuzi ,否则把取到的输入放回stdin的缓冲区,大概的过程当然就是
count++;
cru--;等修改缓冲区的特点的,当然如果你不知道我说的是什么你不用知道这些啦
如果不是数字,那么就此次输入失败
如果只有scanf("%d",&i); 那么返回成功的项数,当然就是0了,如果成功就是1了,实际程序中可以这样,
while(scanf("%d",&i)==0) getchar();
OK,当然不是很有必要这样的代码,程序要你输入数字你也不会输入字符吧
还有scanf是运行时库函数,根据运行时候的参数来决定行为。,
而cin是操作符重载而已 >;>;根据参数的类型直接编译成相应的代码,不需象 scanf的时候再检测。 |
|