您好我正在编写一个简单的程序来将字符串追加到文件中,
open String
let ()=
let oc= open_out_gen [Open_creat; Open_text; Open_append] 0o640 Sys.argv.(1) in
output_string oc (concat Sys.argv.(2) ["\n"]);
close_out oc;
让我们假设输出文件是追加的 我像这样运行输出 ./append out“text”
虽然它正在创建输出文件,但它只打印新行,为什么Sys.argv(2)出现空?
答案 0 :(得分:0)
你误用了String.concat:
concat Sys.argv.(2) ["\n"]
String.concat sep list
表示它应附加list
的所有元素,并在其间添加sep
作为分隔符。如果列表只包含一个元素(您的情况),则无法放置分隔符。您应该使用^
,即字符串之间的添加,默认情况下可用(不open String
),"x" ^ "y"
提供"xy"
。
此外,您应该避免从标准库中打开模块,完全限定的名称使程序更易于长期阅读和维护(使用String.concat
而不是concat
等)。