Ocaml使用换行符打印到文件
我正在尝试将文件内容逐行打印到新文件中。但是,在运行此函数后,仅将输入文件的最后一行写入输出文件Ocaml使用换行符打印到文件,ocaml,Ocaml,我正在尝试将文件内容逐行打印到新文件中。但是,在运行此函数后,仅将输入文件的最后一行写入输出文件 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; don
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语句中输入换行符,所以我很困惑 :
打开命名文件进行写入,并返回该文件上位于文件开头的新输出通道如果文件已存在,则将其截断为零长度。如果文件不存在,则创建该文件
您在循环中反复调用
open\u out
。对于您读取的每一行,您首先将outFile
截断回长度0,然后再写入该行。是否有方法在循环中执行此操作,打印到文件,并将其附加到末尾?循环中的打印部分很好。为什么不简单地将open\u out
部分移出循环(就像open\u in
调用在循环之外一样)?它会导致指向.ml文件末尾的“语法错误”,该文件什么都不是。我非常困惑。@Baily你少了一个
在进入频道
和关闭频道
之间。只是看到了这一点,并没有很遗憾地解决问题。
val open_out : string -> out_channel