Ocaml распечатать в файл с новой строки - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь распечатать содержимое файла в новый файл построчно.Однако после запуска этой функции только последняя строка входного файла записывается в выходной файл.

let in_channel = open_in inFile in
try
  while true do
    let line = input_line in_channel in
    let oc = open_out outFile in    

    fprintf oc "%s\n" line;  

    close_out oc;              
  done
  with End_of_file ->
    close_in in_channel

Что я делаю не так?Я вводю новую строку в операторе printf, поэтому я очень запутался.

1 Ответ

0 голосов
/ 15 сентября 2018

http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#VALopen_out:

val open_out : string -> out_channel

Открыть именованный файл для записи и вернуть новый выходной канал для этого файла, расположенный в начале файла. Файл усекается до нулевой длины, если он уже существует. Он создается, если он еще не существует.

Вы повторно вызываете open_out внутри цикла.Для каждой прочитанной строки вы сначала усекаете outFile до длины 0, а затем записываете в нее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...