| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2972 人关注过本帖
标题:关于 scanf 读入数量不定的字符串,为什么要输入两次文件结束符才能结束输入 ...
只看楼主 加入收藏
魏则西
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-8-26
结帖率:0
收藏
 问题点数:0 回复次数:4 
关于 scanf 读入数量不定的字符串,为什么要输入两次文件结束符才能结束输入
#include<stdio.h>
#include<string.h>
int main()
{
char zf[1024];
while(scanf("%s",zf)!=EOF)
{
printf("%s\n",zf);
puts(zf\n);
}
return 0;
}
如果代码写成这样的话,如果要结束必须用键盘输入两次文件结束符
即使在while循环的开始加入getchar(),也是如此
而使用while(gets(zf)!=NULL)作为循环条件则不需要如此
为什么,如果是换行符的问题,为什么用getchar无法解决
搜索更多相关主题的帖子: 键盘 换行符 字符串 return include 
2014-09-29 16:35
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:0 
你自己编译过了吗?

你知道scanf语句执行后会返回什么吗?

你知道EOF什么意思吗?

代码测试环境:  WinXP+C-Free5.0.
2014-09-29 18:14
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:0 
简单说说:

while(scanf("%s",zf)!=EOF)  确实需要输入两次 终止符
因为scanf是取流处理,第一次遇到EOF 只是说明前面的输入流有效,然后自己刷新一次缓冲。再一次遇到EOF 那么就OVER了
2014-09-29 20:31
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:0 
回复 3 楼 erty1001
长知识了。。。感谢。。。
2014-09-29 23:43
BuilderZ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:82
专家分:123
注 册:2014-9-22
收藏
得分:0 
shi de
2014-10-01 02:20
快速回复:关于 scanf 读入数量不定的字符串,为什么要输入两次文件结束符才能结 ...
数据加载中...
 
   



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

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