如何在C中解析键值字符串并将其赋值给适当的变量?
也就是说,我们将这个字符串传递给一个程序:
x = 193并且它将为appr赋值。变量,因此
printf("%i", x);产生
193发布于 2013-03-27 19:33:05
给定的
char keyname[32];
int val;其中我们希望存储整数赋值的键名和值的名称,以及示例格式为const char * str = "x = 193"的字符串,我们可以使用sscanf() C库函数为我们执行解析:
sscanf(str, "%32[^=]=%d", keyname, &val)请注意,例如,str = " x = 193"将字符串" x "存储到keyname中,因此如果您希望在赋值周围和变量名之前使用灵活的空格语法,则仍然需要去掉额外的空格。
sscanf()将返回成功转换的次数,因此您应该测试它在我们的示例中是否返回2。
一旦你得到了存储在keyname和val中的变量名和它的整数值,你就可以像上面的@unwind建议的那样,看看你应该把val赋给哪个变量,用strcmp测试。如果您有许多固定名称的变量,那么您可以有一个表并使用查找函数来使其比一长串不可维护且容易出错的if语句要漂亮得多。
发布于 2013-03-27 19:06:28
你不能在运行时神奇地引入变量。当C程序运行时,变量的名称早就消失了,编译器需要这些信息来构建代码,但CPU并不需要这些信息来运行代码。
您将不得不对已知的变量名执行strcmp(),并相应地进行赋值。要优化这一点(对于许多Names值),当然可以使用类似于hash table的东西来存储包含值的名称和整数对。
https://stackoverflow.com/questions/15657306
复制相似问题