首页 > 解决方案 > 来自 io:format 的 badarg 异常

问题描述

我想编写一个函数,可以将一系列数字分隔\n 并打印在列表中。但是,我无法对badarg错误取得任何进展。我该如何继续使用此代码?这个想法是将数字传递给这个程序,但是当我传递多个数字时,我得到了这个错误:

exception error: bad argument
  in function  io:format/3
     called as io:format(<0.62.0>,"~w~n",[3,2,1])
  in call from erl_eval:local_func/6 (erl_eval.erl, line 564)
  in call from escript:interpret/4 (escript.erl, line 788)
  in call from escript:start/1 (escript.erl, line 277)
  in call from init:start_em/1 
  in call from init:do_boot/3 

这是我的代码:

-module(prog).
-export([read_stdin/1]).
-export([main/0]).

read_stdin(Acc) ->
    case io:fread(standard_io, '', "~d") of
        eof -> Acc;
        {ok, Line} -> read_stdin(Line ++ Acc)
    end.

main() ->
    Data = read_stdin([]),
    io:format("~w~n", Data).

标签: ioerlangpipe

解决方案


to的第二个参数io:format是一个值列表。即使您只使用一个使用值的控制序列(~w在这种情况下),您也需要将值包装在一个列表中:

    io:format("~w~n", [Data]).

推荐阅读