read-line在WINDOWS上只读取1个字符

时间:2014-11-28 18:10:51

标签: windows lisp common-lisp

我的目标是收集用户信息的功能。

到目前为止,我有这个:

(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 - 为什么只读取第一个字符?

2 - 为什么在写完字符串“lol”后我必须按两次ENTER才能使该功能起作用?

我正在使用Allegro CL Free Express Edition 9.0和Windows 8 - 64位。

编辑:在linux机器上尝试后,输出是我所期望的,只需要一个ENTER,但是我仍然想在windows环境中理解这种行为。

1 个答案:

答案 0 :(得分:1)

我在CCL(Linux)和Allegro Enterprise Edition 9.0(Linux)上尝试了您的示例,并且在两种情况下它都返回了:

"lol" NIL

NIL可能是提供信息的,因为它与你的输出不同 - 你有T,这意味着缺少换行,这很奇怪。

http://clhs.lisp.se/Body/f_rd_lin.htm

不幸的是,如果没有Windows环境来尝试这一点,我不确定建议什么,除此之外,这可能是您的终端,换行编码或类似问题的某种问题。