如何在 Chez-Scheme 中读取一行输入?

Posted

技术标签:

【中文标题】如何在 Chez-Scheme 中读取一行输入?【英文标题】:How to read a line of input in Chez-Scheme? 【发布时间】:2016-10-17 21:43:51 【问题描述】:

我不知道该怎么做。在以前的实现中,read-line 可用,但由于某种原因它不在 Chez 中。

我如何只读取一行输入?

【问题讨论】:

【参考方案1】:

Chez Scheme 是 R6RS 的实现。 使用 R6RS get-line 而不是 R7RS read-line

【讨论】:

【参考方案2】:

我的标准前奏曲中有一个read-line;它将换行符处理为回车符、换行符或两者兼有:

(define (read-line . port)
  (define (eat p c)
    (if (and (not (eof-object? (peek-char p)))
             (char=? (peek-char p) c))
        (read-char p)))
  (let ((p (if (null? port) (current-input-port) (car port))))
    (let loop ((c (read-char p)) (line '()))
      (cond ((eof-object? c) (if (null? line) c (list->string (reverse line))))
            ((char=? #\newline c) (eat p #\return) (list->string (reverse line)))
            ((char=? #\return c) (eat p #\newline) (list->string (reverse line)))
            (else (loop (read-char p) (cons c line)))))))

【讨论】:

以上是关于如何在 Chez-Scheme 中读取一行输入?的主要内容,如果未能解决你的问题,请参考以下文章

如何用C语言统计一个数据文件中的数据个数

linux shell读取文件每一行加入用户输入

如何从标准输入读取一行,阻塞直到找到换行符?

java输入输出&&文件

C语言 读取数字

lua脚本读取文本每次一行 如何实现