| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 13788 人关注过本帖
标题:scanf和cin如何判断输入结束呢,O(∩_∩)O谢谢
只看楼主 加入收藏
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:22 
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
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:1 
自己拟定一个退出标志就行了

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-04-12 20:46
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 2楼 yuccn
那么EOF在这里不能起到同样的作用吗?求详解!
2013-04-12 20:49
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:2 
scanf("%d %d",&a,&b)返回输入的数据和格式字符串中匹配次数。当dos或windows中输入ctrl+z(模拟文件结束符EOF)时,scanf返回EOF,所以当输入终止符ctrl+z时,退出while循环

Maybe
2013-04-12 21:58
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 4楼 邓士林
人比较愚钝,还是操作不过去,求详解!!!O(∩_∩)O谢谢~~
2013-04-12 22:26
yctchxf
Rank: 6Rank: 6
来 自:盐城
等 级:侠之大者
威 望:2
帖 子:176
专家分:454
注 册:2012-4-10
收藏
得分:3 
scanf 的返回值是 你输入变量的个数是一个整型数值。如果输入有误的话 返回0; 与文件指针 EOF好像不是一个类型啊。
2013-04-12 22:30
yctchxf
Rank: 6Rank: 6
来 自:盐城
等 级:侠之大者
威 望:2
帖 子:176
专家分:454
注 册:2012-4-10
收藏
得分:0 
程序代码:
#include<stdio.h>
void main()
{
    int a,b,c;
    // 输入量个 整型试试,在输入 字符串试试。就明白了。
    c=scanf("%d %d",&a,&b); 
    printf("%d",c);
}
2013-04-12 22:33
如蜗牛
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
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:14 
这些流函数,要么执行完毕自然结束,要么遇到错误中止。对后者,要给出错误的数据让它读到,才能返回EOF。注意:EOF不是输入的结果,而是函数遇到错误返回的结果,要引发错误,在DOS/Windows这类微软系的环境中,是用按Ctrl+Z或F6键,向输入流中送入一个错误数据,这个错误是操作系统识别的,不同的操作系统有不同的方法。

授人以渔,不授人以鱼。
2013-04-14 00:42
如蜗牛
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:42
注 册:2013-4-12
收藏
得分:0 
回复 9楼 TonyDeng
scanf返回值会是EOF?还是不明白,求详解。
2013-04-14 00:49
快速回复:scanf和cin如何判断输入结束呢,O(∩_∩)O谢谢
数据加载中...
 
   



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

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