我在C编码,我有一个字符串,其中包含像这样的值
E = 3213213123
N = 321312321321321
如何使用正则表达式从字符串中分配int e
和int n
这些值?
答案 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);
}
应该这样做。请注意,上面只是对变量名称的“列表”进行硬编码,如果需要支持大量(超过三个)变量,则变量名称的列表不可扩展。