当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


erlang fread(Prompt, Format)用法及代码示例


fread(Prompt, Format) -> Result
fread(IoDevice, Prompt, Format) -> Result
类型:
IoDevice = device()
Prompt = prompt()
Format = format()
Result = 
    {ok, Terms :: [term()]} |
    {error, {fread, FreadError :: io_lib:fread_error()}} |
 server_no_data()
server_no_data() = {错误,错误说明::term()} |埃夫

从标准输入 ( IoDevice ) 读取字符,并用 Prompt 进行提示。根据 Format 解释字符。 Format 包含指导输入解释的控制序列。

Format 可以包含以下内容:

  • 空白字符(空格、制表符和换行符)导致输入被读取到下一个非空白字符。

  • 必须与下一个输入字符匹配的普通字符。

  • 控制序列,其通用格式为 ~*FMC ,其中:

    • 字符* 是可选的返回抑制字符。它提供了一种指定要省略的字段的方法。

    • F 是输入字段的field width

    • M 是一个可选的翻译修饰符(其中 t 是唯一受支持的,即 Unicode 翻译)。

    • C 确定控制序列的类型。

    除非另有说明,否则所有控制序列都会忽略前导空格。输入字段的宽度不能超过一行。

    可用的控制序列:


    ~

    输入中应包含单个 ~


    d

    应为十进制整数。


    u

    需要以 2-36 为基数的无符号整数。字段宽度参数用于指定基数。不会跳过前导空白字符。


    -

    需要一个可选的符号字符。符号字符 - 给出返回值 -1 。符号字符 + 或没有符号给出 1 。字段宽度参数被忽略。不会跳过前导空白字符。


    #

    需要以 2-36 为基数且带有 Erlang-style 基数前缀的整数(例如 "16#ffff" )。


    f

    预计为浮点数。它必须遵循 Erlang 浮点数语法。


    s

    读取一串非空白字符。如果指定了字段宽度,则会读取此数量的字符,并删除所有尾随空白字符。返回一个 Erlang 字符串(字符列表)。

    如果 Unicode 转换有效 ( ~ts ),则接受 > 255 个字符,否则不接受。使用翻译修饰符,返回的列表因此也可以包含> 255的整数:

    1> io:fread("Prompt> ","~s").
    Prompt> <Characters beyond latin1 range not printable in this medium>
    {error,{fread,string}}
    2> io:fread("Prompt> ","~ts").
    Prompt> <Characters beyond latin1 range not printable in this medium>
    {ok,[[1091,1085,1080,1094,1086,1076,1077]]}

    a

    s 类似,但结果字符串被转换为原子。


    c

    读取等于字段宽度的字符数(默认为 1)并作为 Erlang 字符串返回。但是,前导和尾随空白字符不会像 s 那样被省略。返回所有字符。

    Unicode 翻译修饰符的工作方式与 s 相同:

    1> io:fread("Prompt> ","~c").
    Prompt> <Character beyond latin1 range not printable in this medium>
    {error,{fread,string}}
    2> io:fread("Prompt> ","~tc").
    Prompt> <Character beyond latin1 range not printable in this medium>
    {ok,[[1091]]}

    l

    返回截至该点已扫描的字符数,包括空白字符。

    该函数返回:


    {ok, Terms}

    读取成功,Terms 是成功匹配和读取的项目列表。


    eof

    遇到文件结尾。


    {error, FreadError}

    读取失败,FreadError 给出有关错误的提示。


    {error, ErrorDescription}

    读取操作失败,参数 ErrorDescription 给出有关错误的提示。

例子:

20> io:fread('enter>', "~f~f~f").
enter>1.9 35.5e3 15.0
{ok,[1.9,3.55e4,15.0]}
21> io:fread('enter>', "~10f~d").
enter>     5.67899
{ok,[5.678,99]}
22> io:fread('enter>', ":~10s:~10c:").
enter>:   alan   :   joe    :
{ok, ["alan", "   joe    "]}

相关用法


注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 fread(Prompt, Format) -> Result。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。