中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-01 11:14
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 问个菜问题,但不一定就好解决哦 查看 848 回复 6
楼 主 问个菜问题,但不一定就好解决哦 发表于 2004-09-08 00:00 ·  中国 湖北 武汉 教育网
中级用户
积分 258
发帖 49
注册 2004-08-29 00:00
21年会员
UID 30951
性别 男
状态 离线
#include <stdio.h>
main()
{
int i=0;char wb,s,c;
for(i=0;i<1000;i++)
{wb=getchar(); if(wb==EOF) break;}
scanf("%s",s);getch();
}
我的问题是,为什么循环里边碰到eof以后,后边的scanf就跳过了呢?如何让他执行呢?
2 发表于 2004-09-08 00:00 ·  美国
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
23年会员
UID 9
状态 离线
因為break跳出了整個循環嘛。。
Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

3 发表于 2004-09-08 00:00 ·  中国 湖北 武汉 教育网
中级用户
积分 258
发帖 49
注册 2004-08-29 00:00
21年会员
UID 30951
性别 男
状态 离线
可是scanf("%s",s);在循环外呢,老兄你没看清吧
4 发表于 2004-09-13 00:00 ·  中国 重庆 渝中区 电信
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
22年会员
UID 22966
性别 男
状态 离线
不是這樣的!你應該用:getche()或getch()
#include <stdio.h>
main()
{
int j=0;char wb,s,c;
for(j=0;j<100;j++)
{
wb=getche();
if(wb==EOF)
break;
}
scanf("%s",s);
getch();
}


5 发表于 2004-09-13 00:00 ·  中国 湖北 武汉 教育网
中级用户
积分 258
发帖 49
注册 2004-08-29 00:00
21年会员
UID 30951
性别 男
状态 离线
楼上的,这么搞不行,用getche时,连回车符都忽略了,我的目的是,先要读入一大段文本,并且让它显示(所以getch也不行),完成这个工作后还要能执行scanf读入文件名,以便保存.
6 发表于 2004-09-20 00:00 ·  中国 广东 珠海 联通
中级用户
★★
bbpc
积分 340
发帖 107
注册 2004-04-11 00:00
22年会员
UID 22257
性别 男
状态 离线
在输入完文本之后,在文件名输入之前需要清一下键盘缓冲区。
x86!dos!
爱你就象老鼠爱大米
http://www.baby-pc.com/
7 发表于 2004-10-17 00:00 ·  中国 安徽 合肥 电信
中级用户
★★
积分 365
发帖 95
注册 2004-02-28 00:00
22年会员
UID 18733
性别 男
状态 离线
楼上的,键盘只能缓冲20个字符,清空缓冲有什么用?
论坛跳转: