Just FYI, for searching using bsearch() you need to have the query in a similar structure, not in just a string.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct w {
char en[25], xx[25];
} word;
word dict[1000002] = {0,0};
int cmp(const void *a, const void *b) {
return strcmp(((word *)a)->xx,((word *)b)->xx);
}
int main() {
int I=0, J;
char INPUT[100], *p;
word *q, QUERY;
while(gets(INPUT)) {
if (!strcmp(INPUT,""))
break;
p = strtok(INPUT," ");
strcpy(dict[I].en,p);
p = strtok(NULL," ");
strcpy(dict[I].xx,p);
I++;
}
qsort(dict,I,sizeof(word),cmp);
while(scanf("%s",QUERY.xx)!=EOF) {
q = bsearch(&QUERY,dict,I,sizeof(word),cmp);
if (q!=NULL) {
printf("%s\n",q->en);
} else {
printf("eh\n");
}
}
return 0;
}
you are growing well
ReplyDelete