菜鸟求助。一个程序,有些读不懂的地方,忘大虾们指点下!
源程序如下:#include<stdio.h>
#include<string.h>
#include<ctype.h>
char *dic[][40]={
"atlas","A volume of maps.",
"car","A motorized vehicle.",
"telephone","A commmunication device.",
"airplane","A flying machine.",
" "," "
};
int main(void)
{
char word[80],ch;
char **p;
do{
puts("\nEnter word:");
scanf("%s",word);
p=(char **)dic; /*<-此为第一处看不懂的地方,这个语句到底什么意思,有什么用?*/
do{
if(!strcmp(*p,word)){
puts("Meaning:");
puts(*(p+1));
break;
}
if(!strcmp(*p,word)) break;
p=p+2;
}while(*p);
if(!*p) puts("Word not in dictionary.");
printf("Another?(y/n):");
scanf("%c%*c",&ch); /*<-此为第二处看不懂的地方,同样是看不懂这个语句的用意。*/
}while(toupper(ch)!='N'); /*<-第三处,为什么无论输入y,还是n,都不跳出循环,仍然从头开始执行*/
return 0;
}
大虾们帮忙看看,帮忙解释下前2处的语句,看看第三处有什么问题,让do循环是个死循环。谢谢了