我正在编写这个应该从文件中读取的程序,对内容做一些操作并写入输出文件以保留原始行尾。如果文件有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