c - 转义括号文字内的 Scanf 十进制数
问题描述
我想从标准输入读取十进制数字,用方括号括起来。目前,我正在使用scanf()
格式说明符%d
。如果转换失败,我将退出程序并返回错误代码 1。
int result = scanf(" [ %d ] ", &num);
if (result != 1)
return 1;
例如,此输入不会触发转换失败:
[ 123
如果理解正确,我是否scanf()
将方括号解释[]
为“一组”字符?有没有办法告诉从字面上scanf()
解释方括号?[]
还是一个简单(但功能齐全)的解决方法?
解决方案
不要使用scanf。使用fgets,自己检查方括号,然后使用strtol转换数字。您应该使用endptr检查额外的结束字符,这可能是查找结束 ] 的有用方法。
推荐阅读
- wordpress - 返回 get_permalink(),前面有文本
- python - 如何将 csv 列与 Python 结合起来
- python - 无法在 Python 中解析 XML 文件
- python - 在 numPy 中替换 2dArray 中的一个特定项目
- python-docx - 在 run.text 中看不到特殊字体字符(有时)
- r - 按截止日期计算病例数
- selenium - 使用 cucumber 和 selenium 查找用于 Salesforce 自动化测试的 xpath
- python - 在python3中打印学生姓名和学生分数
- javascript - Owl Carousel - 使用 Prev / Next 跳过过去的图像
- python-3.x - 如何在私有子网中获取 EC2 实例私有 IP?