파일에서 읽어야하는이 프로그램을 작성 중이며 내용이있는 내용을 수행하고 원본 줄 끝을 출력 파일에 기록합니다. 파일에 CRLF
결말이있는 경우 출력 파일에도 해당 파일이 있어야합니다. 내 문제는 CLISP
구현 (특히 gcl
과 함께 사용)으로 끝나는 줄을 쓰는 데 있습니다. 줄 바꿈 문자 (LF
)를 쓰려고하면 파일의 끝이 CRLF
으로 끝납니다. 나는 이것이 CLISP
의 구현과 관련이 있다고 생각합니다.
다른 langauages와 마찬가지로 write the file in binary mode
으로가는 길을 필요로합니다. 사양의 표준 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))
. 즉, 마이크로 소프트 시스템의 표준이기 때문에 창에 :dos
에
(with-open-file (out-file "test.dat" :direction :output :external-format :unix)
...)
외부 형식 기본값 :
왜이 경우 바이너리 모드에서 읽기가 느려야합니까? 그리고 유지할 수없는 방법? – Segfault
은 시스템 기능을 수동으로 다시 구현하기 때문에 발생합니다. 그렇게하고 싶다면 어셈블리를 사용하십시오 :-) – sds
hehe. 나는이 접근법을 더 좋아한다. 훨씬 더 간단합니다. – Segfault