Символы для возвращения и перевода строки
\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 управления
The FORMAT
Control ~%
печатает символ новой строки (!).
Так
(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
не имеет специальный синтаксис для вывода Linefeed или символов возврата каретки.
переносы в управлении FORMAT
Common Lisp позволяют многостроковые строки. Таким образом, мы можем использовать их в качестве контроля формата:
Здесь вы можете увидеть, что разрыв строки в строке управления также на выходе:
CL-USER 77 > (format t "~%first line
second line~%~%")
first line
second line
NIL
Ниже приведен пример, где управление [email protected]
FORMAT сохраняет разрыв строки , но удаляет пробелы в следующей строке:
CL-USER 78 > (format t "~%first [email protected]
second line~%~%")
first line
second line
NIL
В SBCL 1.0.22, CLISP 2,47 и Clozure CL 1.3 на Windows: (Ареф (формат ноль "~%") 0) возвращает # \ Newline. –
@Frank Shearar: а что (длина (формат nil "~%")) производит? И что он производит, когда вы пишете его в файл? Как долго файл? –
1, 1 и 1 для длины. С (с открытым файлом (s #p "c: \\ foo.txt": direction: output: if-exists: supersede) (строка записи (формат nil "~%") s)), SBCL и CCL выплюнул 1-байтовый файл, содержащий \ #Newline. Clisp выплюнул 1-байтовый файл, содержащий # \ Return! –