return 0;
}
}
}
}
}
fclose(f);
printf("Can not find function of key '%c'!\n",c);
return 2;
}
//C:\test>test
//Input a char:a
//Can not find function of key 'a'!
//
//C:\test>test
//Input a char:h
//hello
//
//C:\test>test
//Input a char:b
//goodbye
//
------解决方案--------------------
不好意思,刚写的拙计了,有几个疏忽,可以参考下面的代码:
(1)先定义一个函数名->函数的映射
typedef void (*pFun)(void);
map nameFunMap;
nameFunMap.insert(make_pair("hello", &hello));
nameFunMap.insert(make_pair("bye", &bye));
(2)再定义一个缩写->函数名的映射
map abbrNameMap;
char line[MAX], *p;
fp = fopen(initFilePath, "r");
while(fgets(line, MAX, fp)){
if((p = strchr(line, '=')) && p-line == 1){//你用的是一个字母的缩写
abbrNameMap.insert(make_pair(line[0], string(*(p+1))));
}
}
(3)根据输入的缩写得到函数名,根据函数名调用函数
map::iterator abbrNameIter;
map::iterator nameFunIter;
c = getchar();
abbrNameIter = abbrNameMap.find(c);//根据输入的缩写得到函数名
if(abbrNameIter != abbrNameMap.end()){
nameFunIter = nameFunMap.find(abbrNameIter->second);//根据函数名得到函数地址
if(nameFunIter != nameFunMap.end()) *(nameFunIter->second);//调用函数
}