我想从stdin中读取用方括号括起来的十进制数字。目前,我使用的是带有格式说明符%d
的scanf()
。如果转换失败,我将退出程序,并返回错误代码1。
int result = scanf(" [ %d ] ", &num);
if (result != 1)
return 1;
例如,此输入不会触发转换失败:[ 123
我是否正确理解scanf()
是将方括号[]
解释为一组字符?有没有办法告诉scanf()
从字面上解释方括号[]
?还是一个简单(但功能齐全(的解决方案?
不要使用scanf。使用fgets,自己检查方括号,并使用strtol转换数字。您应该使用endptr来检查是否有额外的结束字符,这可能是查找结束字符的有用方法]。