【发布时间】:2018-11-07 20:36:21
【问题描述】:
我正在开发一个使用 sscanf() 来检测输入的实现。 输入要么包含连字符“-”,要么不包含。字符串的长度和连字符的位置会有所不同。 例子:
"18509726-550"
"14782"
我一直在尝试提出一个格式字符串,该格式字符串对于带有连字符的字符串返回 > 0,但对于没有连字符的字符串则不然,但是我没有成功。这可能是不可能的。我也意识到有更好的方法来实现这一点,但这段代码是在我之前编写的。
代码:
// what format string will return 0 for one but not the other?
String^ pszString = "18509726-550"; // or "14782"
int nP;
char buffer[256];
char buffer1[256];
const char* pSrc = (gcnew marshal_context())->marshal_as<const char*>(pszString);
nP=sscanf(pSrc, "%[-]s", buffer, buffer1);
我尝试了几种格式字符串:
"%s-%s"
"%[0-9-]s"
"%[-]s"
"%[^-]s"
我已经翻阅了我能找到的任何 sscanf 文档,我认为单独使用 sscanf 是不可能的,但验证也有帮助。 感谢社区!
【问题讨论】:
-
听起来你可能想要一个正则表达式。
-
你说得对,我想要一个正则表达式,但我被 scanf 卡住了。我不认为上述是可能的,但我希望有人可能有更好的见解。