作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,我有这个 block :
int nFirst, nSecond;
char sInput[10];
printf("Which variable to change to 10?");
scanf("%s", &sInput);
// BAD - inflexible and unmaintainable
if(strcmp(sInput,"nFirst") ==0){
nFirst = 10;
}
else if (strcmp(sInput,"nSecond")==0) {
nSecond =10;
}
有什么好的方法可以做到这一点吗?就像将字符串视为变量名一样?
最佳答案
不,在 C 中没有“好的”方法可以做到这一点。变量名称(通常)不会保留在生成的机器代码中,除了支持调试之外。 C 没有内置机制将字符串值转换为对同名变量的引用。
您必须手动将变量名称映射到变量。您可以构建一个查找表,将字符串值与相应变量的地址相关联:
struct vn {
char *varname;
void *addr;
Typeinfo t;
};
其中 Typeinfo
是一些枚举或其他用于编码变量类型的机制,为您提供一些效果
int foo;
double bar;
char *blurga;
struct vn varsByName[] = { {"foo", &foo, IntType},
{"bar", &bar, DoubleType},
{"blurga", blurga, CharPtrType} };
我不建议这样做。
关于c - 如何更改名称为用户输入的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19726333/
我是一名优秀的程序员,十分优秀!