OCaml每次扫描2个值,并输入2个变量

OCaml每次扫描2个值,并输入2个变量,ocaml,Ocaml,我有以下代码: let d = scanf " %d" (fun a->a) let nrf = read_int() # let (c, d) = Scanf.scanf " %d %d" (fun a b -> (a, b));; 8 144 val c : int = 8 val d : int = 144 # 我想输入2个整数值,然后按enter键。在C语言中,我使用scanf(“%d%d”、&x1和&x2) 但在OCaml中,我必须按enter键,然后用此代码输入第二个

我有以下代码:

let d = scanf " %d" (fun a->a)
let nrf = read_int()
# let (c, d) = Scanf.scanf " %d %d" (fun a b -> (a, b));;
8 144
val c : int = 8
val d : int = 144
#
我想输入2个整数值,然后按enter键。在C语言中,我使用scanf(“%d%d”、&x1和&x2) 但在OCaml中,我必须按enter键,然后用此代码输入第二个值。 有人能告诉我们如何在一行中读取两个整数并将它们放入两个变量中吗? 谢谢你的帮助

您可以尝试以下方法:

let (c, d) = Scanf.scanf " %d %d" (fun a b -> (a, b))
运行此代码时,看起来是这样的:

let d = scanf " %d" (fun a->a)
let nrf = read_int()
# let (c, d) = Scanf.scanf " %d %d" (fun a b -> (a, b));;
8 144
val c : int = 8
val d : int = 144
#
第二行是用户(即我)键入的输入。

您可以尝试以下操作:

let (c, d) = Scanf.scanf " %d %d" (fun a b -> (a, b))
运行此代码时,看起来是这样的:

let d = scanf " %d" (fun a->a)
let nrf = read_int()
# let (c, d) = Scanf.scanf " %d %d" (fun a b -> (a, b));;
8 144
val c : int = 8
val d : int = 144
#

第二行是用户键入的输入(即,由我输入)。

read\u int需要一个包含int的字符串(否则,将导致失败)。 您必须使用read_行,它从输入中读取字符串并返回字符串。
然后,使用Jeffrey提到的sscanf。

read\u int需要一个包含int的字符串(否则,它会导致失败)。 您必须使用read_行,它从输入中读取字符串并返回字符串。
然后,您可以使用Jeffrey提到的sscanf。

谢谢!我是ocaml的新手,这件事仍然让我困惑。谢谢!我是ocaml的新手,这件事仍然让我困惑。你能编辑你的代码来编写
let
而不是
let
?;-)谢谢杰弗里;-)您是否可以编辑您的代码以编写
let
而不是
let
?;-)谢谢杰弗里;-)