想象一下以下情况:
您使用 scanf()
读取了一个字符串,但您只需要其中的几个数据点。
是否有一种简单的方法来丢弃多余的信息,同时不失去检查适当数据是否存在的能力,以便您仍然可以轻松拒绝格式不正确的字符串?
示例:
const char* store = "Get: 15 beer 30 coke\n";
const char* dealer= "Get: 8 heroine 5 coke\n";
const char* scream= "Get: f* beer 10 coke\n";
我想接受第一个字符串,但忘记啤酒,因为啤酒很难喝。
我想拒绝第二和第三个字符串,因为它们显然不是7/11适当的清单;
所以我考虑以下结构:
char* bId = new char[16];
char* cId = new char[16];
int cokes;
sscanf([string here], "Get: %d %s %d %s\n", [don't care], bId, &cokes, cId);
我可以保留格式检查,但是对于不关心的内容,我应该填什么才能避免编译器报错?
当然,我可以创建一个后面用不到的变量,但这并不是这个问题的重点。同时分别检查左边和右边也是一个显而易见的解决方案,但这里我不想使用这种方法。
那么,在scanf和相关函数中,有没有一种方式可以不关心字符串的某些部分,但仍然检查其类型呢?