フラットファイルに列を追加する関数を作成しています。これまでのところ:
(defun ff-from-vector (vec dir file)
(with-open-file (ff-vec-str (make-pathname :name file
:directory dir)
:direction :output
:if-exists :overwrite)
(dotimes (i (length vec))
(format ff-vec-str "~A~%" (svref vec i)))))
(defun vec-from-1col-ff (dir file)
(let ((col (make-array `(,(ff-rows dir file)))))
(with-open-file (ff-col-str (make-pathname :name file
:directory dir)
:direction :input)
(do ((line (read-line ff-col-str nil 'eof)
(read-line ff-col-str nil 'eof))
(i 0 (incf i)))
((eql line 'eof))
(setf (aref col i) (read-from-string line))))
col))
(defun add-col-to-ff (col-dir col-file ff-dir ff-file)
(ff-from-vector (vec-from-1col-ff col-dir col-file)
ff-dir
ff-file))
ただし、ファイルから読み取ると、次のようになります。
2
2
2
2
そして、ファイルを上書きしてみてください:
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
私は得る:
2
2
2
2
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
基本的に私の質問は、どの関数またはコードがフォーマットを出力ファイルの行の終わりに移動するかということです。私が得ることができるように:
1 1 1 1 2
1 1 1 1 2
1 1 1 1 2
1 1 1 1 2