Next: Writing, Previous: Ports, Up: Input and Output
[Generic procedures for reading from ports.]
Return
#tif x is an end-of-file object; otherwise#f.
Return
#tif a character is ready on input port and#fotherwise. Ifchar-ready?returns#tthen the nextread-charoperation on port is guaranteed not to hang. If port is a file port at end of file then return#t. 1
Return the next character available from port, updating port to point to the following character. If no more characters are available, an end-of-file object is returned.
Return the next character available from port, without updating port to point to the following character. If no more characters are available, an end-of-file object is returned.2
Place char in port so that it will be read by the next read operation. If called multiple times, the unread characters will be read again in last-in first-out order. If port is not supplied, the current input port is used.
Return string str to line-buffering-input-port. A subsequent call to
read-stringorread-charfrom this port will retrieve this string or its first character, respectively, before consulting the underlying port.
Drain port's read buffers (including any pushed-back characters) and return the contents as a single string.
(define p (open-input-file ...))
(drain-input p) => empty string, nothing buffered yet.
(unread-char (read-char p) p)
(drain-input p) => initial chars from p, up to the buffer size.
Draining the buffers may be useful for cleanly finishing buffered I/O so that the file descriptor can be used directly for further input.
Return the current column number or line number of input-port, using the current input port if none is specified. If the number is unknown, the result is #f. Otherwise, the result is a 0-origin integer - i.e. the first character of the first line is line 0, column 0. (However, when you display a file position, for example in an error message, we recommand you add 1 to get 1-origin integers. This is because lines and column numbers traditionally start with 1, and that is what non-programmers will find most natural.)
Set the current column or line number of port, using the current input port if none is specified.
[1] char-ready? exists to make it possible for a
program to accept characters from interactive ports without getting
stuck waiting for input. Any input editors associated with such ports
must make sure that characters whose existence has been asserted by
char-ready? cannot be rubbed out. If char-ready? were to
return #f at end of file, a port at end of file would be
indistinguishable from an interactive port that has no ready
characters.
[2] The value returned by a call to peek-char
is the same as the value that would have been returned by a call to
read-char on the same port. The only difference is that the very
next call to read-char or peek-char on that
port will return the value returned by the preceding call to
peek-char. In particular, a call to peek-char on an
interactive port will hang waiting for input whenever a call to
read-char would have hung.