2013-02-15 69 views
0

我正在創建一個將列添加到平面文件的函數。到目前爲止,我有:在文件中寫入行尾

(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 

本質上我的問題是:什麼函數或代碼mo將輸出文件中行的格式設置爲結尾?所以,我可以得到:

1 1 1 1 2 
1 1 1 1 2 
1 1 1 1 2 
1 1 1 1 2 
+0

您應該使用文本編輯器使用自動縮進。上面的代碼看起來像手動縮進 - 以一種令人困惑的方式。 – 2013-02-15 12:55:08

回答

1

你不能簡單地多輸出文件添加到各個行,而不會覆蓋一些數據。

創建一個新文件並將輸出放在那裏,從兩個輸入文件中獲取數據。

+0

好的,謝謝。這似乎是一個宏觀的範圍。 – category 2013-02-15 13:07:28