中国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
银牌会员




积分 1832
发帖 647
注册 2002-11-8
状态 在线
『第 2 楼』:  

支持原创!!!

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

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


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



论坛跳转: