| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 13788 人关注过本帖
标题:scanf和cin如何判断输入结束呢,O(∩_∩)O谢谢
取消只看楼主 加入收藏
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
scanf和cin如何判断输入结束呢,O(∩_∩)O谢谢
#include <stdio.h>

int main()
{
    int a,b,c[10];
    int i=0;
    while(scanf("%d %d",&a, &b) != EOF)
    {
        c[i]=a+b;
        i++;
    }
    for(int j=0;j<i;j++)
        printf("%d\n",c[i]);
    return 0;
}

请大神帮忙看看这个程序为什么无法正常运行啊?scanf和cin如何判断结束呢?
搜索更多相关主题的帖子: 谢谢 include 如何 
2013-04-12 20:40
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 2楼 yuccn
那么EOF在这里不能起到同样的作用吗?求详解!
2013-04-12 20:49
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 4楼 邓士林
人比较愚钝,还是操作不过去,求详解!!!O(∩_∩)O谢谢~~
2013-04-12 22:26
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 7楼 yctchxf
嗯,是的,不过在多个输入结束时还是要用到EOF,我也不知道为什么。
Eg :
Input:
1 2
2 3
3 4
EOF
就会Output:
3
5
7
此外,还有一个问题,就是系统提示,下面这个经过修改的程序,有下面这个问题,能帮忙解释一下吗?
#include <stdio.h>
int main()
{
    int a,b,c[1000];
    int i=0;
    while(scanf("%d%d",&a,&b) != 0)
    {
        c[i]=a+b;
        i++;
    }
    for(int j=0;j<i;j++)
        printf("%d\n",c[j]);
    return 0;
}

SIGSEGV --- Segment Fault. The possible cases of your encountering this error are:
         1.buffer overflow --- usually caused by a pointer reference out of range.
         2.stack overflow --- please keep in mind that the default stack size is 8192K(Notice: In GCC a little overflow will not get a Runtime Error).
         3.illegal file access --- file operations are forbidden on our judge system.
2013-04-12 23:28
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 9楼 TonyDeng
scanf返回值会是EOF?还是不明白,求详解。
2013-04-14 00:49
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 9楼 TonyDeng
或许,我该简化一下我的问题:如何使这个循环结束,不设定特殊的结束符的前提下。
2013-04-14 01:26
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 17楼 TonyDeng
衷心感谢您这么细致的讲解!!!

我刚才实验了一下,正如你说的,scanf();会有三种返回值,-1,1,2
(ctrl+Z)/x  4  返回为-1(EOF);【一个数据也没有正确读入】
4   crtl+Z/x   返回值为1;【正确读入一个数据】
1 2            返回值为2;【两个数据均正确读入】

此外,你说到直接返回错误码,不太理解,怎样呢?
2013-04-14 16:48
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 18楼 TonyDeng
此外,您说到,关于数据输入的问题,一个scanf();一次最好读入一个数据。

是因为什么呢?

是因为我的两次输入数据都会产生回车键吗?所以结束时缓存中第一个数据产生的回车键会对第二个数据可能有影响吗?这里有一个问题不清楚,我在输入scanf时,回车键是什么时候,如何产生的呢?
2013-04-14 16:57
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 22楼 TonyDeng
噢噢噢···版主好博学,深切受教!以后还请多多指教!!!不胜感激!
2013-04-14 23:09
快速回复:scanf和cin如何判断输入结束呢,O(∩_∩)O谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037094 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved