我有以下sscanf
:
int four;
sscanf("1234&awe$asdf@3222*gr45", format, four);
我希望此sscanf将值3222
放入变量four
中。
什么应该是format
字符串?
&
$
@
和*
始终保持不变。所以字符串输入的其他例子可以是:
"6345&346dfh$aweg@5463*nvm"
- > four
将5463
"0hjgf&456d$fhg@05645*pogyu"
- > four
将05645
对不起,如果我不够清楚的话。我想尽可能地保持清晰。
编辑: 我认为方法是这样的:
sscanf("1234&awe$asdf@3222*gr45", "@%d*", four);
还有其他方法吗?
答案 0 :(得分:2)
您的建议无法正常工作,您需要先将所有内容跳到@,所以"%*[^@]@%d"
答案 1 :(得分:2)
#include <cstdio>
int main() {
int four = 0;
sscanf("1234&awe$asdf@3222*gr45", "%*[^@]@%d%*s", &four);
printf("%d\n", four);
return 0;
}
要获得第二个号码,请执行以下操作:
sscanf("1234&awe$asdf@3222*gr45", "%*[^@]@%d%*[^0-9]%d", &four, &four1);
答案 2 :(得分:1)
@Nirock评论正在进行中。
int four;
// Anything not & (don't save it) followed by & then
// Anything not $ (don't save it) followed by $ then
// Anything not @ (don't save it) followed by @ then
// Anything not * (don't save it) followed by * then
// followed by an `int`
if (1 == sscanf(s, "%*[^&]&%*[^$]$%*[^@]@%*[^*]*%d", &four)) {
; // found it
}