首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

想办法弄个循环把代码简化一下,该怎么处理

2012-05-28 
想办法弄个循环把代码简化一下将dataname和“”中的数据进行对比匹配,匹配成功则赋值。想办法弄个循环把代码

想办法弄个循环把代码简化一下
将dataname和“”中的数据进行对比匹配,匹配成功则赋值。
想办法弄个循环把代码简化一下!
int fuzhi(char *dataname,char *datavalue,int modu_num)
{
if(!(strcmp(dataname,"CmdData_1")))
{
Modu[modu_num].moduData.CmdData[0]=translate16(datavalue);
}
if(!(strcmp(dataname,"CmdData_2")))
{
Modu[modu_num].moduData.CmdData[1]=translate16(datavalue);
}
if(!(strcmp(dataname,"CmdData_3")))
{
Modu[modu_num].moduData.CmdData[2]=translate16(datavalue);
}
if(!(strcmp(dataname,"CmdData_4")))
{
Modu[modu_num].moduData.CmdData[3]=translate16(datavalue);
}
if(!(strcmp(dataname,"CmdData_5")))
{
Modu[modu_num].moduData.CmdData[4]=translate16(datavalue);
}
if(!(strcmp(dataname,"CmdData_6")))
{
Modu[modu_num].moduData.CmdData[5]=translate16(datavalue);
}
if(!(strcmp(dataname,"CmdData_7")))
{
Modu[modu_num].moduData.CmdData[6]=translate16(datavalue);
}
if(!(strcmp(dataname,"CmdData_8")))
{
Modu[modu_num].moduData.CmdData[7]=translate16(datavalue);
}
if(!(strcmp(dataname,"CmdData_9")))
{
Modu[modu_num].moduData.CmdData[8]=translate16(datavalue);
}
if(!(strcmp(dataname,"CmdData_10")))
{
Modu[modu_num].moduData.CmdData[9]=translate16(datavalue);
}
}

[解决办法]
定义一个指针数组,用于指向这10个字符常量,然后写一个函数,这个函数的功能就是用于查找dataname,然后返回下标。

C/C++ code
/* 正确返回字符串的下标,返回-1说明没有找到。*/int getIndex(char *dataname, int len){    char *str[10] = { "CmdData_1", "CmdDate_2", ...};    int i;    for (i = 0; i < 10; i++)        if (!strcmp(dataname, str[i]))             return i;     return -1;}int fuzhi(char *dataname,char *datavalue,int modu_num){    int num; /* 用于接收字符串常量的下标 */    num = getIndex(dataname);    if (num < 0)    {        fprintf(stderr, "Can't find it!\n");        return -1;    }    Modu[modu_num].moduData.CmdData[num]=translate16(datavalue);    return 0;} 

热点排行