作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Printf.printf "%d\n"(a - b));; 在我第-6ren">
我按照指导下载并执行了 utop here ,然后我运行了以下代码:
Scanf.scanf "%d %d"(fun a b -> Printf.printf "%d\n"(a - b));;
在我第一次输入 3 1
时,它运行良好,给出 2 - : unit = ()
,
但在第二次尝试相同的输入后,它继续给出消息:
Exception:
Stdlib.Scanf.Scan_failure
"scanf: bad input at char number 3: character '\\n' is not a decimal digit".
最佳答案
Scanf
消耗尽可能少的输入。
如果你评价
Scanf.scanf "%d %d" (fun a b -> Printf.printf "%d\n" (a - b))
并发送到标准输入
3 1\n
Scanf
读取并使用 3 1
前缀并将换行符 \n
留在输入缓冲区中。然后下一次调用
Scanf.scanf "%d %d" (fun a b -> Printf.printf "%d\n" (a - b))
将卡在这个剩余的字符上并失败
Stdlib.Scanf.Scan_failure
"scanf: bad input at char number 3: character '\\n' is not a decimal digit".
在这种情况下,您可以使用此 \n
字符
Scanf.scanf "\n" ();
Scanf.scanf "%d %d" (-);;
或
Scanf.scanf "\n%d %d" (-);;
但是,更好的解决方案可能是在您的输入格式中添加换行符:
Scanf.scanf "%d %d\n" (fun a b -> Printf.printf "%d\n" (a - b))
关于ocaml - 接收 Stdlib.Scanf.Scan_failure : character '\\n' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73472783/
我按照指导下载并执行了 utop here ,然后我运行了以下代码: Scanf.scanf "%d %d"(fun a b -> Printf.printf "%d\n"(a - b));; 在我第
我按照指导下载并执行了 utop here ,然后我运行了以下代码: Scanf.scanf "%d %d"(fun a b -> Printf.printf "%d\n"(a - b));; 在我第
我是一名优秀的程序员,十分优秀!