| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1043 人关注过本帖
标题:为什么我VS 2015 scanf 函数 不返还EOF?
只看楼主 加入收藏
li362490567
Rank: 1
等 级:新手上路
帖 子:89
专家分:8
注 册:2015-7-9
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
为什么我VS 2015 scanf 函数 不返还EOF?
代码如下
#include<stdio.h>
int main(void)
{
 int n;
 if (scanf("%d", &n) != EOF)
 {
 printf("1232");
 }
 return 0;
}
我按 CTRL+Z 并不会退出循环,要连续分三行输入CTRL+Z才会退出,这是为什么
搜索更多相关主题的帖子: return 
2015-11-27 21:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如果书上没告诉你这个函数在什么情景下会返回EOF,就不要信书写这样的代码,它不能达成你的目的。

授人以渔,不授人以鱼。
2015-11-27 22:52
li362490567
Rank: 1
等 级:新手上路
帖 子:89
专家分:8
注 册:2015-7-9
收藏
得分:0 
回复 2楼 TonyDeng
什么意思??没听懂。。。树上说windows下 换行并CTRL+Z scanf就会返回EOF。我重复三次 才结束循环,不知道为什么。。
2015-11-28 07:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
函数扫描到第一个字符是ASCII26,才会返回EOF。

授人以渔,不授人以鱼。
2015-11-28 08:54
Furutaka
Rank: 2
等 级:论坛游民
帖 子:1
专家分:10
注 册:2015-12-2
收藏
得分:10 
你这不是循环啊
2015-12-02 13:33
an你若成风
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-1-6
收藏
得分:0 
回复 4楼 TonyDeng
不好意思挖了个坟,但这个问题已知困扰我好久了。就比如K&R书里面一段简单的字符计数程序:
程序代码:
#include <stdio.h>
/* count characters in input; 1st version */
main()
{
    long nc;
    nc = 0;
    while (getchar() != EOF)
        ++nc;
    printf("%ld\n", nc);
}

这里面如果我输入abc<ctrl+z>,单步调试发现读到<ctrl+z>的时候读到26,并提示接着输入,只有在单行中按下<ctrl+z>方可得到EOF,请问这是为何?

[此贴子已经被作者于2016-2-28 12:07编辑过]

2016-02-28 12:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 6楼 an你若成风
scanf()之類函數是在按下Enter鍵之後才開始掃描輸入字符串的。

授人以渔,不授人以鱼。
2016-02-28 21:39
快速回复:为什么我VS 2015 scanf 函数 不返还EOF?
数据加载中...
 
   



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

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