
while(scanf("%d",&n)!=EOF) 输入一个数,循环怎么就结束了
6个回答
展开全部
其实是有可能输入了非数字,导致死循环了。
EOF是-1。如果scanf用%d扫描到非数字,就会返回0。但是不会消耗掉数据,然后又进来扫描,还是扫描到非数字,你运行一下下面的程序就好了。
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
int ret=0;
int n=0;
#if 1
printf("EOF %d\n",EOF);
ret=scanf("%d",&n);
printf("ret %d n=%d\n",ret,n);
while(ret!=EOF)
{
ret=scanf("%d",&n);
printf("ret %d n=%d\n",ret,n);
}
#else
while(scanf("%d",&n)!=EOF);
#endif
return 0;
}
EOF是-1。如果scanf用%d扫描到非数字,就会返回0。但是不会消耗掉数据,然后又进来扫描,还是扫描到非数字,你运行一下下面的程序就好了。
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
int ret=0;
int n=0;
#if 1
printf("EOF %d\n",EOF);
ret=scanf("%d",&n);
printf("ret %d n=%d\n",ret,n);
while(ret!=EOF)
{
ret=scanf("%d",&n);
printf("ret %d n=%d\n",ret,n);
}
#else
while(scanf("%d",&n)!=EOF);
#endif
return 0;
}
推荐于2018-04-12
展开全部
int n;
while(scanf("%d",&n)!=EOF)
printf("%d\n",n);
//按ctrl+z结束循环
while(scanf("%d",&n)!=EOF)
printf("%d\n",n);
//按ctrl+z结束循环
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为CTRL+Z的asc的值就是EOF的值,并不是让你输入“CTRL+Z”字符串,而是按CTRL Z
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
EOF是文件结束符,它的值是-1....你输入的是-1?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输入-1结束
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |