2016-09-17 5 views
2

私はラケット言語の新人です。プレーンテキストファイルの特定の行に文字列(改行)を書き込む方法がわかりません。ラケット言語を使用してプレーンテキストファイルの特定の行に文字列を書き込む方法は?

私は、appendプロシージャがファイルの最後に改行を挿入することを確認しました。

また、ラケットのドキュメントではCounting Positions, Lines, and Columnsについて語っていますが、わかりやすい例は見つけられませんでした(少なくとも私にとっては)。

例は私が欲しいものをよりよく説明するかもしれません。

test.txtと呼ばれる)ファイルを仮定は、10行を持っていると私は、新しい行が正常に挿入された後、私は意味ライン7と8

の間の文字列" New information starts here."を記述する必要があり、test.txtファイルを持ってしようとしています11行。

私は感謝します。ベスト。

答えて

2

最も簡単なのは、古いファイルのコピーを作成し、コピー中に新しい行を挿入することです。その後、古いファイルを削除し、古いファイル名になるように新しいファイルの名前を変更します。

次のようにコピーを行うことができます。

#lang racket 

; insert-line : string number -> 
; Almost copies line for line the current input port to the current output port. 
; When line-number lines have been copied an extra line is inserted. 
(define (insert-line line line-number) 
    (for ([l (in-lines)] 
     [i (in-naturals)]) 
    (when (= i line-number) 
     (displayln line)) 
    (displayln l))) 

; insert-line-in-file : file file string number -> 
; copies file-in to file-out and inserts the line line at the given line number. 
(define (insert-line-in-file file-in file-out line line-number) 
    (with-outout-to-file file-out 
    (λ() 
     (with-input-from-file file-in 
     (λ() 
      (insert-line line line-number)))))) 
+0

私は@soegaard結果は、私が意図していたもの異なることさによって提案されたコードを実行していた場合。 'file-in test.txt'の内容は次の通りです: ** 1行目。 行2トピック1. 行3トピック2. 行4結論** '(insert-line-in-file" test.txt "" out.txt ""トピック2 "3)'結果は 'out.txt'ファイルの中にあります。 ** 1行目の紹介。 ライン2トピック1 ライン3トピック2 ライン4トピック3 ライン5結論** しかし、出力は次の通りであった:。 **行1トピック3 ライン2トピック3 ライン3トピック3. 行4トピック3. 行5トピック3 ** ** –

+1

修正済み。挿入行に(表示行)の代わりに(表示行)を表示する必要があります。ゼロからのカウント。 – soegaard

+0

'with-outout-to-file'を' with-output-to-file'に置き換えて少し修正しました。 –

関連する問題