我正在用 C 编码,我有一个字符串,其中包含这样的值
e=3213213123
n=321312321321321
如何使用正则表达式从字符串中分配这些值int e
?int n
跳过该"e="
部分,并使用strtoll
. 不需要正则表达式。
atoi()
它将字符串转换为整数。
strtol()
- 将字符串转换为长整数。
阅读这些功能的手册页并根据您的需要进行选择。
atoi() 函数将 nptr 指向的字符串的初始部分转换为 int。行为与
strtol(nptr, (char **) NULL, 10);
除了 atoi() 不检测错误。
没有办法直接将字符串与变量名匹配;变量名严格来说是一个编译时概念,在运行时不存在。
您需要进行匹配(可能是针对运行时列表或变量名数组),解析要分配的值,最后将分配作为单独的步骤进行。
在这里使用正则表达式没有什么意义,一些更简单的方法,例如:
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);
}
应该这样做。请注意,上面只是对变量名称的“列表”进行了硬编码,如果您需要支持大量(三个以上)变量,则它的可扩展性不是很高。