关于是否死循环的问题,只再发此一贴:
此题http://yzfy.org/bbs/viewthread.php?tid=329对输入数字没有限制,不用scanf(...)=-1将无法结束输入
但对本贴所讨论的问题中,有要求说输入是正整数,所以我仍然认为用
while(scanf("%d",&a))
{
if(a<=0)break;
......
}
不会对程序造成死循环。如果谁有办法让上述语句出现死循环的案例,请通过QQ:360956932告诉我一下,我将感激不尽。同时也非常希望与各位编程高手交个朋友
至于说EOF,我经常是用VC6,在VC6中有#define EOF -1
另外EOF相当于Ctrl+z 的效果,程序运行时按Ctrl+z也不会死循环。
再说一点,就是若用while(scanf("%d",&a)!=EOF),用户输入的若不是数字,而是字母,那么这时才是真正的死循环。因为输入的字母破坏了输入流的正常工作,输入流中fail位被置1。
但用while(scanf("%d",&a))时,当输入流被破坏时,scanf将返回0,可以正常结束程序。
红色的部分与此贴无关,随便说说
If you shed tears when you miss the sun, you also miss the stars.