我一直在努力寻找这个问题的答案......但我还没找到。
我必须以C
的方式解析C中的字符串将XMb发送至 eth0 eth1 wlan0 ,费率 1 2 3
将YMb发送至 em1 wlan0 ,费率 2 5
问题是我不知道列表中的元素数量。因此我不知道要放多少%。
提前致谢。
答案 0 :(得分:1)
一种可能的解决方案是读入整个命令并稍后处理它。 例如,您可以使用分隔符''(空格)来标记您的命令字符串。然后,您将查找“to”和“with”之间的所有令牌,这将是您发送的目的地。同样,您可以通过在“费率”之后查找令牌来查找费率。
答案 1 :(得分:1)
另一种可能性是使用sscanf
(或fscanf
)解析字符串并使用%n
说明符,该说明符存储到该点处理的字符数。
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Send XMb to eth0 eth1 wlan0 with rates 1 2 3";
char val[100];
char c[2];
int n = 0, m;
if (sscanf(str, "Send %1[XY]Mb to %n", c, &n) == 1) {
printf("%s\n", c);
while (sscanf(str+n, "%99s%n", val, &m) == 1) {
n += m;
if (strcmp(val, "with") == 0)
break;
printf("%s\n", val);
}
sscanf(str+n, " rates%n", &m);
n += m;
while (sscanf(str+n, "%99s%n", val, &m) == 1) {
printf("%s\n", val);
n += m;
}
}
return 0;
}