想象一下:
您在scanf()
的字符串中读取,但您只需要字符串中的几个数据点。
有没有一种简单的方法来丢弃无关的信息,而不会失去检查是否有适当的数据的能力,所以你仍然可以很容易地拒绝格式错误的字符串?
例子:
const char* store = "Get: 15 beer 30 e\n";
const char* dealer= "Get: 8 e 5 e\n";
const char* scream= "Get: f* beer 10 e\n";
我想接受第一个字符串,但忘了啤酒,因为啤酒很恶心。我想拒绝第二和第三串,因为它们显然不是 7 / 11 的合适清单;
所以我在考虑以下结构:
char* bId = new char[16];
char* cId = new char[16];
int es;
sscanf([string here], "Get: %d %s %d %s\n", [don't care], bId, &es, cId);
这样我会保持格式检查,但我会把 [不在乎],这不会使编译器呜呜声?
当然,我可以做一个变量,我不使用以后,但这不是这个问题的重点。另外检查左侧和右侧分别是一个明显的解决方案,我不是在这里寻找。
那么,有没有一种方法可以不关心但仍然检查 scanf 和 friends 中的一段字符串的类型?
在% 之后使用 * 作为赋值抑制字符
例子:
sscanf([string here], "Get: %*d %s %d %s\n", bId, &es, cId);
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(35条)