使用正则表达式从字符串中分配变量

时间:2012-12-06 09:47:16

标签: c regex

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

  

E = 3213213123

     

N = 321312321321321

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

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

相同

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

答案 2 :(得分: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);
}

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