编译器显示无法解析外部符号的问题
这是要统计C语言关键字出现的次数,求大佬在不改变程序结构的前提下帮忙解释一下这个问题,错误显示:有两个无法解析的外部符号
我无法找到错误出现在哪里,蛮尴尬的,请大佬解释一下错在哪里哈
源代码如下:
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#define MAXWORD 100
#define NKEYS 11
//关键字结构体定义
struct key{
char *word;
int count;
}keytab[NKEYS]={
"auto",0,
"break",0,"case",0,
"char",0,"const",0,
"continue",0,"default",0,
/*...*/
"unsinged",0,"void",0,
"volatile",0,"while",0
};
//输入函数
int getword(char *,int);
//折半查找函数
int binsearch(char *,struct key *,int);
//统计输入中C语言关键字出现次数
int main(){
int n;
char word[MAXWORD];
while(getword(word,MAXWORD) !=EOF){
if(isalpha(word[0]))
if((n=binsearch(word,keytab,NKEYS))>=0)
keytab[n].count++;
}
for(n=0;n<NKEYS;n++){
if(keytab[n].count>0)
printf("%4d %s \n",keytab[n].count,keytab[n].word);
}
return 0;
}
//binsearch函数,在tab[0]到tab[n-1]之间查找单词
int binsearch(char *word,struct key tab[],int n){
int cond;
int low,high,mid;
low=0;
high=n-1;
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;
}
//输入函数
int getword(char *word,int lim){
int c,getch(void);
void ungetch(int);
char *w=word;
while(isspace(c=getch()))
;
if(c!=EOF)
*w++=c;
if(!isalpha(c)){
*w='\0';
return c;
}
for(;--lim>0;w++){
if(!isalnum(*w=getch())){
ungetch(*w);
break;
}
*w='\0';
return word[0];
}
}