现有己下几个己赋值的变量
int asdflj=23,lsjf=33,dsllie=234;
这几个变量的名字并没有任何联系
我想得到这样的结果:
当我从键盘输入asdflj或lsjf或dsllie则输出相应变量名的值
不用switch一个一个去判断的办法 有没有别的办法?
期待帮助......
这样吧,我把代码写上,您可以参考一下。 为了测试,我对您的题目进行了如下修改: 增加了两个字符串,且它们的值由1到5排列。 本人不保证程序会发生异常或运行期错误。 #include "stdio.h" #include "conio.h" #include "string.h"
#define MAXBUF 128 /* 字符串最大缓冲区*/ #define MAXTABLE 5 /* 表大小*/ typedef struct KeyWordTag /* 表类型*/ { char KeyName[MAXBUF]; /* 字符串存储区*/ int Value; /* 对应的值存储区*/ }KeyWord;
int main(void) { KeyWord kwTab[MAXTABLE] = /* KeyWord Table */ { {"asdflj",1}, /* 初始化表 */ {"lsjf",2}, {"dsllie",3}, {"huen",4}, {"bccn",5} }; KeyWord *pkwTab = &kwTab; /* 指向由结构体构建的类型 KeyWord 的指针 */ char Buf_InStr[MAXBUF]; /*输入字符串的缓冲区*/ char *pInStr = Buf_InStr; /* 指向输入字符串的指针 */ int T; /* 循环辅助作用的临时变量 */
puts("\nInput a string."); scanf("%s",pInStr); /* 获得输入字符串 */
for(T = 0;T < MAXTABLE;T++) { if(!strcmp((pkwTab+T) -> KeyName,pInStr)) /* 找到匹配的字符串,输出其相应的值 */ { /* 输出结果 */ printf("\nFindout this string <%s> successfully!!!\nIt's value is: %d", pInStr, (pkwTab+T) -> Value); puts("\n\nPress any key to exit....\n"); getch(); return 0; /* 并不继续查找是否尚有相同的字符串 */ } }
printf("Fail: Unable to findout this string <%s>.\n", pInStr); /*查找失败*/ puts("\nPress any key to exit....\n"); getch(); return 0; }
[此贴子已经被作者于2005-5-28 2:30:40编辑过]