中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [原创]BAISIC和C的NOBLANK实现 上一主题 | 下一主题
lemonhall
高级用户

OS/2女孩


积分 639
发帖 183
注册 2003-6-14
状态 离线
『楼 主』:  [原创]BAISIC和C的NOBLANK实现

***************************************** *以下两个例程完全由lemonhall编写并运行 *通过,未经过严格测试. *请不要未经同意,任意转贴 *lemonhall@vip.sina.com QQ:313813 *************************************** Qbasic1.0/Quick Baick 4.5下运行通过 将输入中的双空格消去成为单空格的例程 =============================================== '建立一个过大的缓冲区 DIM c$(999) '计数器初式化 n = 1 CLS '用一个循环仿真相应的getchar函数 DO UNTIL c$(n - 1) = CHR$(13) 10 c$(n) = INKEY$: IF c$(n) = "" THEN 10 PRINT c$(n); n = n + 1 LOOP '使用了一个同名计数器,是一个很不好的习惯 n = 1 '相应的define NOBLANK 'a' lc$ = "a" '完全按C语言的逻辑运算核心"抄"出来的循环 '其中s开头代表一个状态,state '用IF结构是为了完全显示地声明出二进制状态 DO UNTIL c$(n) = CHR$(13) IF c$(n) " " THEN sc = 1 ELSE sc = 0 END IF IF lc$ " " THEN slc = 1 ELSE slc = 0 END IF '进行一个BAISC的逻辑运算,是判断的核心 ss = sc OR slc IF ss 0 THEN PRINT c$(n); lc$ = c$(n) n = n + 1 LOOP ========================================= = 相应的C语言实现(改造Berkeley C) = ========================================= #include /*开始有些难理解的语句*/ #define NOBLANK 'a' main() /*replace string of blanks with a single blank */ /*这无需翻译了吧*/ { int c,lastc; lastc=NOBLANK; while((c=getchar())!=EOF) { if (c!=' '||lastc!=' ') putchar(c); lastc=c; } }




REM 喜欢DOS,因为它的简单 REM 喜欢OS/2,因为它不再矫饰 REM 喜欢BASIC,因为它并不幼稚 REM 喜欢GNU,因为它杂乱无章
2003-8-2 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (313813)  编辑帖子  回复  引用回复
LanE
银牌会员




积分 1833
发帖 648
注册 2002-11-8
状态 离线
『第 2 楼』:  

支持原创!!!


2003-8-2 00:00
查看资料  发送邮件  发短消息 网志  OICQ (9367907)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: