gpt4 book ai didi

c - 如何更改名称为用户输入的变量?

转载 作者:行者123 更新时间:2023-11-30 15:43:46 24 4
gpt4 key购买 nike

例如,我有这个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com