我的目标是从用户那里收集信息的功能。
到目前为止我有这个:
(defun prompt-read (prompt)
(format *query-io* "~a: " prompt)
(force-output *query-io*)
(read-line *query-io*))
女巫输出:
CG-USER(27): (prompt-read "cenas")
cenas: lol
"l"
T
这里有两件事我不明白:
1 - 为什么 read-line 只获取第一个字符?
2 - 为什么我必须在输入字符串“lol”后按两次 ENTER 才能使函数正常工作?
我使用的是 Allegro CL Free Express Edition 9.0 和 Windows 8 - 64 位。
编辑:在 linux 机器上尝试此操作后,输出符合我的预期,只需要一个 ENTER,但是我仍然想了解 Windows 环境中的这种行为。
最佳答案
我在 CCL (Linux) 和 Allegro Enterprise Edition 9.0 (Linux) 上试过你的例子,在这两种情况下它都返回了:
“哈哈”
零
NIL
可能提供信息,因为它与您的输出不同——您得到的是 T,这意味着缺少换行符,这很奇怪。
http://clhs.lisp.se/Body/f_rd_lin.htm
不幸的是,没有 Windows 环境来尝试这个,我不确定该建议什么,除此之外,这可能是您的终端、换行符编码或类似问题的某种问题。
关于windows - read-line 在 WINDOWS 上只读取 1 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27194007/