我的目标是一个从用户那里收集信息的功能。
到目前为止,我有这样的想法:
(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机器上尝试后,输出是我所期望的,并且只需要输入一次,但是我仍然希望了解windows环境下的这种行为。
发布于 2014-11-29 05:52:51
我在CCL (Linux)和Allegro Enterprise Edition 9.0 (Linux)上测试了您的示例,在这两种情况下都返回:
"lol" NIL
NIL可能是信息性的,因为它与您的输出不同--您得到了T,这意味着缺少换行符,这非常奇怪。
http://clhs.lisp.se/Body/f_rd_lin.htm
不幸的是,没有Windows环境来尝试它,我不确定该建议什么,除此之外,这可能是您的终端、换行符编码或类似的东西的某种问题。
https://stackoverflow.com/questions/27194007
复制相似问题