1

我正在用 C 编码,我有一个字符串,其中包含这样的值

e=3213213123

n=321312321321321

如何使用正则表达式从字符串中分配这些值int eint n

4

3 回答 3

1

跳过该"e="部分,并使用strtoll. 不需要正则表达式。

于 2012-12-06T09:49:19.590 回答
0

atoi()它将字符串转换为整数。

strtol()- 将字符串转换为长整数。

阅读这些功能的手册页并根据您的需要进行选择。

atoi() 函数将 nptr 指向的字符串的初始部分转换为 int。行为与

strtol(nptr, (char **) NULL, 10); 除了 atoi() 不检测错误。

于 2012-12-06T09:48:42.083 回答
0

没有办法直接将字符串与变量名匹配;变量名严格来说是一个编译时概念,在运行时不存在。

您需要进行匹配(可能是针对运行时列表或变量名数组),解析要分配的值,最后将分配作为单独的步骤进行。

在这里使用正则表达式没有什么意义,一些更简单的方法,例如:

char vname[32];
int  value;

if(sscanf("%30s=%d", vname, &value) == 2)
{
  if(strcmp(vname, "e") == 0)
    e = value;
  else if(strcmp(vname, "n") == 0)
    n = value;
  else
    fprintf(stderr, "**Unknown variable name '%s'\n", vname);
}

应该这样做。请注意,上面只是对变量名称的“列表”进行了硬编码,如果您需要支持大量(三个以上)变量,则它的可扩展性不是很高。

于 2012-12-06T09:56:14.897 回答