#include #include #include static const char *keywords[] = { "auto", "break", "case", "char", /* . */ /* . */ /* . */ "while" }; #define NUM_KW sizeof(keywords) / sizeof(char *) int kw_compare( const void *p1, const void *p2 ) { const char *p1c = (const char *) p1; const char **p2c = (const char **) p2; return( strcmp( p1c, *p2c ) ); } int keyword_lookup( const char *name ) { const char **key; key = (char const **) bsearch( name, keywords, NUM_KW, sizeof( char * ), kw_compare ); if( key == NULL ) return( -1 ); return key - keywords; } void main() { printf( "%d\n", keyword_lookup( "case" ) ); printf( "%d\n", keyword_lookup( "crigger" ) ); printf( "%d\n", keyword_lookup( "auto" ) ); }