请问如何判断输入是否已经结束

chenkuizhong 2004-05-06 11:17:33
比如说从外面输入一级数据:
1 2 3
4 5 6
7 8 9

我如何判断输入到 9 时输据已经输入完毕了?
当然前提是我不知道总共要输入几个数字
...全文
292 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouqingyuan 2004-05-06
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
int main()
{
int a,b;
while (cin>>a>>b) cout<<a+b<<endl;
return 0;
}
为什么没有结束符EOF呢?

因为cin当接受到同类型,就为真,如果没有,就为假,所以不需要EOF来控制结束。
而上面的scanf就不一样了,输入不同类型也同样返回真,故要用EOF来控制结束。
chenkuizhong 2004-05-06
  • 打赏
  • 举报
回复
用C++语言的是这样:
#include <iostream>
using namespace std;
int main()
{
int a,b;
while (cin>>a>>b) cout<<a+b<<endl;
return 0;
}
为什么没有结束符EOF呢?
cngdzhang 2004-05-06
  • 打赏
  • 举报
回复
从文件读:

FILE *f;

f=fopen(filename,"r");
int num;
fscanf(f,"%d",&num);
while(!feof(f))
{
//do something
fscanf(f,"%d",&num);
}


从屏幕读:

要按下F6,或 Ctrl+z,再回车结束输入
int num;
scanf("%d",&num);
while(!feof(stdin))
{
//do something
scanf("%d",&num);
}

标志法:

int num;
scanf("%d",&num);
while(num!=-1)
{
//do something
scanf("%d",&num);

}
chenkuizhong 2004-05-06
  • 打赏
  • 举报
回复
我还是把整个程序贴出来吧
#include <stdio.h>
int main()
{
int a,b;
while (scanf("%d%d",&a,&b)!=EOF)
printf("%d\n",a+b);
return 0;
}

这应该是输入两个数字,然后打印他们的和吧,
while (scanf("%d%d",&a,&b)!=EOF),应该是判断是否已经输入完毕了吧
可是为什么是!=EOF呢?


liem 2004-05-06
  • 打赏
  • 举报
回复
在不知道有多少个数字情况下,要知道输入是否完毕,只有根据输入数据情况来判断。
通常的一种方法,是以较特殊的数据作为输入结束,比如-1(当数据都是非负情况下)。
有时可以用EOF作为数据输入结束
chenkuizhong 2004-05-06
  • 打赏
  • 举报
回复
while (scanf("%d%d",&a,&b)!=EOF)
这句是什么意思?
chenkuizhong 2004-05-06
  • 打赏
  • 举报
回复
如果是从网上提交题目(比如说参加竞赛),外面输入测试的数据,那样好像不能自定义结束符吧
cancer001 2004-05-06
  • 打赏
  • 举报
回复
自定义结束符号(例如回车)
cissynero 2004-05-06
  • 打赏
  • 举报
回复
指向文件末尾
chenkuizhong 2004-05-06
  • 打赏
  • 举报
回复
EOF是什么?

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧