* 循环条件 a. 接收的最大字符个数 lim, 每读取一个字符, 该变量自减
* 当该变量自减为0时停止循环接收字符串
* 循环条件 b. 当读取到的字符 不是 字母 或者数字的时候, 停止循环
*/
for(; --lim > 0; wp++)
{
if(!isalnum(*wp = getc(stdin)))
{
ungetc(*wp, stdin);
break;
}
}
*wp = '';
return word[0];
}
/*
* 参数解析 : word 是要查找的字符串 tab 字符串数组 n 字符串大小
*/
int binsearch(char *word, struct key tab[], int n)
{
/*
* cond 判断 查找的字符串 是在mid 坐标之前 (<0) 之后(>0) 或者就是mid坐标
*
* 如果查找的不是正好中间的变量符合, 就返回 -1 失败
*/
int cond, low, high, mid;
low = 0;
high = n - 1;
/*
* 要找的值的下标在low 和 high之间
* mid 是 low 和 high 的中值
* 如果 word 小于中值下标将比较范围缩小
*/
while(low <= high)
{
mid = (low + high) / 2;
if((cond = strcmp(word, tab[mid].word)) < 0)
high = mid - 1;
else if(cond > 0)
low = mid + 1;
else
return mid;
}
return -1;
}</STRING.H></CTYPE.H></STDIO.H>