概念所谓Table-DrivenApproach(表驱动方法)简单来说就是通过查表的方式获取数据。这里的“表”通常是一个数组,但也可以看作是数据库的一种体现。基于词典部首查表查找不详字是一种典型的表驱动方法,即根据每个字的字形,计算出一个索引值,映射到对应的页码。与逐页逐页依次查找字典中的字符相比,部首搜索方法效率极高。在编程方面,当数据不多时,可以使用逻辑判断语句(if...else或switch...case)获取值;但是随着数据的增加,逻辑语句会越来越长,表驱动方式的优势在这个时候开始显现。简单例子上面提到的概念总是比较枯燥,下面就简单的用C语言写一个例子吧。下面的示例函数:传入不同的数字打印不同的字符串。使用if...else分步判断的写法如下:voidfun(intday){if(day==1){printf("Monday\n");}elseif(day==2){printf("星期二\n");}elseif(day==3){printf("星期三\n");}elseif(day==4){printf("星期四\n");}elseif(day==5){printf("星期五\n");}elseif(day==6){printf("星期六\n");}elseif(day==7){printf("星期日\n");}使用switch...case的方法编写。voidfun(intday){switch(day){case1:printf("Monday\n");休息;情况2:printf("星期二\n");休息;情况3:printf("星期三\n");休息;案例4;printf("星期四\n");休息;案例5:printf("星期五\n");休息;案例6:printf("星期六\n");("星期天\n");休息;默认值:中断;}}使用表驱动方式实现。charweekDay[]={Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};voidfun(intday){printf("%s\n",weekDay[day]);}看完这个例子,也许“恍然大悟”,一拍大腿,原来手表的驱动方法原来这么简单。是的,它的核心原理就是这么简单,就像上面的例子。如果上面的例子没有得到这种用法的好处,那就再举个栗子。计算用户输入的一串数字中每个数字出现的次数。常规写法int32_taDigitCharNum[10]={0};/*输入字符串中每个数字字符出现的次数*/int32_tdwStrLen=strlen(szDigits);int32_tdwStrIdx=0;for(;dwStrIdx
