![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-31 07:19 |
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » [原创]BAISIC和C的NOBLANK实现 |
| 可打印版本 1,257 / 1 |
| 第1楼 lemonhall | 发表于 2003-08-02 00:00 |
| 高级用户 发帖 183 积分 639 | |
|
[原创]BAISIC和C的NOBLANK实现 *****************************************
*以下两个例程完全由lemonhall编写并运行 *通过,未经过严格测试. *请不要未经同意,任意转贴 [email protected] 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; } } |
|
| 第2楼 LanE | 发表于 2003-08-02 00:00 |
| 银牌会员 发帖 648 积分 1,835 | |
|
支持原创!!!
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |