首页 > 解决方案 > 转义括号文字内的 Scanf 十进制数

问题描述

我想从标准输入读取十进制数字,用方括号括起来。目前,我正在使用scanf()格式说明符%d。如果转换失败,我将退出程序并返回错误代码 1。

int result = scanf(" [ %d ] ", &num);
if (result != 1)
  return 1;

例如,此输入不会触发转换失败: [ 123

如果理解正确,我是否scanf()将方括号解释[]为“一组”字符?有没有办法告诉从字面上scanf()解释方括号?[]还是一个简单(但功能齐全)的解决方法?

标签: cscanfstdio

解决方案


不要使用scanf。使用fgets,自己检查方括号,然后使用strtol转换数字。您应该使用endptr检查额外的结束字符,这可能是查找结束 ] 的有用方法。


推荐阅读