module Scanf: sig endmodule Scanning: sig endexception Scan_failure of string
val bscanf : Scanning.scanbuf -> ('a, Scanning.scanbuf, 'b) format -> 'a -> 'bbscanf ib format f reads tokens from the scanning buffer ib according
to the format string format, converts these tokens to values, and
applies the function f to these values.
The result of this application of f is the result of the whole construct.
Raise Scanf.Scan_failure if the given input does not match the format.
Raise Failure if a conversion to a number is not possible.
Raise End_of_file if the end of input is encountered while scanning
and the input matches the given format so far.
The format is a character string which contains three types of objects:
f,
Conversion specifications consist in the % character, followed
by optional field width, followed by one or two conversion
characters. The conversion characters and their meanings are:
d: reads an optionally signed decimal integer.i: reads an optionally signed integer
(usual input formats for hexadecimal (0x[d]+ and 0X[d]+),
octal (0o[d]+), and binary 0b[d]+ notations are understood).u: reads an unsigned decimal integer.x or X: reads an unsigned hexadecimal integer.o: reads an unsigned octal integer.s: reads a string argument (by default strings end with a space).S: reads a delimited string argument (delimiters and special
escaped characters follow the lexical conventions of Caml).c: reads a single character.C: reads a single delimited character (delimiters and special
escaped characters follow the lexical conventions of Caml).f, e, E, g, G: reads an optionally signed floating-point number
in decimal notation, in the style dddd.ddd e/E+-dd.b: reads a boolean argument (true or false).ld, li, lu, lx, lX, lo: reads an int32 argument to
the format specified by the second letter (decimal, hexadecimal, etc).nd, ni, nu, nx, nX, no: reads a nativeint argument to
the format specified by the second letter.Ld, Li, Lu, Lx, LX, Lo: reads an int64 argument to
the format specified by the second letter.[ range ]: reads characters that matches one of the characters
mentioned in the range of characters range (or not mentioned in
it, if the range starts with ^). Returns a string that can be
empty, if no character in the input matches the range.N: applies f to the number of characters read so far.%: matches one % character in the input.%6d reads an integer, having at most 6 decimal digits;
and %4f reads a float with 4 characters.
Scanning indications appear just after string conversions s and
[ range ] to delimit the end of the token. A scanning
indication is introduced by a @ character, followed by some
constant character c. It means that the string token should end
just before the next matching c. If no c character is
encountered, the string token spreads as much as possible.
For instance, "%s@\t" reads a string up to the next tabulation
character. If a scanning indication @c does not follow a
string conversion, it is ignored and treated as a plain c
character.
Note: the scanf facility is not intended for heavy duty
lexical analysis and parsing. If it appears not expressive
enough for your needs, several alternative exists: regular expressions
(module Str), stream parsers, ocamllex-generated lexers,
ocamlyacc-generated parsers.
val fscanf : Pervasives.in_channel -> ('a, Scanning.scanbuf, 'b) format -> 'a -> 'bScanf.bscanf, but inputs from the given channel.val sscanf : string -> ('a, Scanning.scanbuf, 'b) format -> 'a -> 'bScanf.bscanf, but inputs from the given string.val scanf : ('a, Scanning.scanbuf, 'b) format -> 'a -> 'b
val kscanf : Scanning.scanbuf ->
(Scanning.scanbuf -> exn -> 'a) ->
('b, Scanning.scanbuf, 'a) format -> 'b -> 'aScanf.bscanf, but takes an additional function argument
ef that is called in case of error: if the scanning process or
some conversion fails, the scanning function aborts and applies the
error handling function ef to the scanning buffer and the
exception that aborted evaluation.