我正在編寫這個應該從文件中讀取的程序,對內容做一些操作並寫入輸出文件以保留原始行尾。如果文件有CRLF
結尾,輸出文件也應該有。我的問題在於編寫以CLISP
實現爲結尾的行(它與gcl
一起使用)。當我嘗試寫入換行字符(LF
)時,該文件最終會以CRLF
結尾。我猜這與CLISP
的實施有關。
我需要一種方式來write the file in binary mode
像其他langauages。規範中的標準I/O函數僅採用可選的流名稱和要寫入的內容。在Clisp中以二進制模式寫入/讀取文件
您可以重現行爲像這樣的東西:
(with-open-file (out-file "test.dat" :direction :output)
(setf ending #\linefeed)
(princ "First Line" out-file)
(write-char ending out-file)
(princ "Second Line" out-file)
(write-char ending out-file)
(princ "Second Line" out-file))
我需要在Windows上運行的解決方案。
爲什麼在這種情況下讀取二進制模式會更慢?而且,不可維護的如何? – Segfault
,因爲您正在手動重新實現系統功能。如果你想這樣做,使用匯編:-) – sds
呵呵。我更喜歡這種方法;它更簡單。 – Segfault