如何在Lisp中读取输入直到EOF
如何在Lisp中读取输入流直到EOF?在C中,您可以这样做:如何在Lisp中读取输入直到EOF,lisp,common-lisp,eof,Lisp,Common Lisp,Eof,如何在Lisp中读取输入流直到EOF?在C中,您可以这样做: while((c=getchar())!=EOF) { //循环体。。。 } 我希望能够将数据传输到我的Lisp程序,而不必事先指定数据大小。下面是我正在做的事情的一个例子: (dotimes(i*n*) (setf*t*(解析整数(读取行):允许垃圾t)) (如果(=(mod*t**k*)0)(incf*count*)) 在这个循环中,变量*n*指定我要传送到程序的行数(该值是从输入的第一行读取的),但我只想处理任
while((c=getchar())!=EOF)
{
//循环体。。。
}
我希望能够将数据传输到我的Lisp程序,而不必事先指定数据大小。下面是我正在做的事情的一个例子:
(dotimes(i*n*)
(setf*t*(解析整数(读取行):允许垃圾t))
(如果(=(mod*t**k*)0)(incf*count*))
在这个循环中,变量
*n*
指定我要传送到程序的行数(该值是从输入的第一行读取的),但我只想处理任意数量的未知行,当它到达流的末尾时停止。read line
采用可选参数(eof-error-p
)允许它在点击eof
时返回NIL
(默认)或用户指定的值(eof值
),而不是发出错误信号
发件人:
只读和可选流eof-error-p eof值recursive-p
在上面列出的读取函数中,可选参数EOF-ERROR-p
和EOF-VALUE
指定当程序尝试从耗尽的流中读取时发生的情况。如果EOF-ERROR-p
为真(默认值),则Lisp将在尝试读取耗尽的流时发出错误信号。如果EOF-error-P
为NIL,则Lisp返回EOF-VALUE
(默认值NIL
),而不是发出错误信号
您可以将其用作函数的简单终止条件。有关详细信息,请参阅HyperSpec
或者有时是零
(loop for line = (read-line stream nil nil)
while line
do ... )
@古斯塔夫伯特伦不确定你的意思。它仍然可以从我七年前在这个答案中发布的链接下载。我刚刚确认。
(loop for line = (read-line stream nil nil)
while line
do ... )