Символы для возврата и перевода строки
\r
- это символ #\return
в Common Lisp.
\n
- это символ #\linefeed
в Common Lisp.
Следующая строка заканчивает строку "Hello world."
возвратом и переводом строки.
(format t "Hello world.~C~C" #\return #\linefeed)
#\newline
- это то, что платформа использует как линейное деление. На машинах Unix это часто совпадает с #\linefeed
. На других платформах (Windows, Lisp Machines, ...) это может отличаться.
ФОРМАТ управления
Элемент управления FORMAT
~%
печатает новую строку (!).
So
(format t "Hello world.~%")
напечатает новую строку, которую использует операционная система. CR или CRLF или LF. В зависимости от платформы это будет один или два символа.
Итак, на компьютере с Windows ваш
(format t "Hello world.~C~%" #\return)
может на самом деле печатать: #\return
#\return
#\linefeed
. Это три символа, а не два. Windows использует CRLF для перевода строки. Unix использует LF. Старые Mac OS (до Mac OS X) и Lisp Machines использовали CR для перевода строки.
Запись CRLF
Если вы действительно хотите напечатать CRLF, вы должны сделать это явно. Например с:
(defun crlf (&optional (stream *standard-output*))
(write-char #\return stream)
(write-char #\linefeed stream)
(values))
FORMAT
не имеет специального синтаксиса для вывода символов перевода строки или возврата каретки.
Разрывы строк в элементе управления FORMAT
Common Lisp допускает многострочные строки. Таким образом, мы можем использовать их в качестве элементов управления форматом:
Здесь вы можете видеть, что разрыв строки в управляющей строке также находится в выводе:
CL-USER 77 > (format t "~%first line
second line~%~%")
first line
second line
NIL
Вот пример, где элемент управления ~@
FORMAT сохраняет разрыв строки, но удаляет пробелы в следующей строке:
CL-USER 78 > (format t "~%first line~@
second line~%~%")
first line
second line
NIL