繁体   English   中英

从C中的字符串读取变量参数

[英]Read variable arguments from string in C

我一直试图寻找这个问题的答案......但我还没有找到它。

我必须在C中解析一个字符串

将XMb发送到eth0 eth1 wlan0 ,速率为1 2 3

将YMb发送到em1 wlan0 ,费率为2 5

问题是我不知道列表中的元素数量。因此我不知道要放多少%s。

提前致谢。

一种可能的解决方案是读入整个命令并稍后处理它。 例如,您可以使用分隔符''(空格)来标记您的命令字符串。 然后,您将查找“to”和“with”之间的所有令牌,这将是您发送的目的地。 同样,您可以通过在“费率”之后查找令牌来查找费率。

另一种可能性是使用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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM