Postacie na powrocie zaś Linefeed
\r
jest charakter #\return
w Common Lisp.
\n
jest postacią #\linefeed
w Common Lisp.
Poniżej kończy się ciąg "Hello world."
z funkcją powrotu i podawania linii.
(format t "Hello world.~C~C" #\return #\linefeed)
#\newline
jest cokolwiek platforma wykorzystuje jako linii podziału. Na komputerach z systemem Unix często jest taki sam jak #\linefeed
. Na innych platformach (Windows, Lisp Machines, ...) może być inaczej.
kontrola FORMAT
kontrolą FORMAT
~%
drukuje nową linią (!).
Więc
(format t "Hello world.~%")
wydrukuje przełamane, że system operacyjny używa. CR lub CRLF lub LF. W zależności od platformy będzie to jeden lub dwa znaki.
Tak, na komputerze z systemem Windows swoje
(format t "Hello world.~C~%" #\return)
może faktycznie druku: #\return
#\return
#\linefeed
. Który ma TRZY postacie, a nie dwa. System Windows używa CRLF do nowych linii. Unix używa LF. Stary Mac OS (wcześniej Mac OS X) i Lisp Machines używały CR dla nowych linii.
Pisanie CRLF
Jeśli naprawdę chcesz wydrukować CRLF, trzeba to zrobić w sposób jawny.Na przykład:
(defun crlf (&optional (stream *standard-output*))
(write-char #\return stream)
(write-char #\linefeed stream)
(values))
FORMAT
nie posiada specjalną składnię wyjściu Linefeed lub powrót karetki znaków.
linebreaks w kontroli formatu
Common Lisp pozwala ciągi kilka linii. W ten sposób możemy wykorzystać je jako kontrole format:
Tutaj można zobaczyć, że podział wiersza w ciągu sterowania jest również na wyjściu:
CL-USER 77 > (format t "~%first line
second line~%~%")
first line
second line
NIL
Oto przykład, gdy kontrola [email protected]
FORMAT utrzymuje linebreak , ale usuwa spacje w następnym wierszu:
CL-USER 78 > (format t "~%first [email protected]
second line~%~%")
first line
second line
NIL
W SBCL 1.0.22, clisp 2,47 i Clozure CL 1.3 w systemie Windows: (AREF (format nil "~") 0%) zwraca # \ linią. –
@Frank Shearar: i co robi (długość (format zerowy "~%")) produkować? A co wytwarza podczas pisania do pliku? Jak długi jest plik? –
1, 1 i 1 dla długości. With (with-open-file (s #p "c: \\ foo.txt": direction: output: if-exists: supersede) (ciąg-zapisu (format zero "~%") s)), SBCL i CCL wyrzucił 1-bajtowy plik zawierający \ #Newline. Clisp wypluł 1-bajtowy plik zawierający # \ Return! –