File: htest.c

package info (click to toggle)
libc-sparc 5.3.12-2
  • links: PTS
  • area: main
  • in suites: hamm
  • size: 18,664 kB
  • ctags: 53,237
  • sloc: ansic: 181,379; asm: 5,080; makefile: 3,340; lex: 521; sh: 439; yacc: 401; awk: 28
file content (53 lines) | stat: -rw-r--r-- 1,522 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <search.h>


struct info {	      /* this is the info stored in the table */
     int age, room; /* other than the key. */
};
#define NUM_EMPL    5000    /* # of elements in search table */
main( )
{
     /* space to store strings */
     char string_space[NUM_EMPL*20];
     /* space to store employee info */
     struct info info_space[NUM_EMPL];
     /* next avail space in string_space */
     char *str_ptr = string_space;
     /* next avail space in info_space */
     struct info *info_ptr = info_space;
     ENTRY item, *found_item, *hsearch( );
     /* name to look for in table */
     char name_to_find[30];
     int i = 0;
     /* create table */
     (void) hcreate(NUM_EMPL);
     while (scanf("%s%d%d", str_ptr, &info_ptr->age,
		      &info_ptr->room) !=
EOF && i++ <
NUM_EMPL) {
		    /* put info in structure, and structure in item */
		    item.key = str_ptr;
		    item.data = (char *)info_ptr;
		    str_ptr += strlen(str_ptr) + 1;
		    info_ptr++;
		    /* put item into table */
		    (void) hsearch(item,
ENTER);
     }
     /* access table */
     item.key = name_to_find;
     while (scanf("%s", item.key) != EOF) {
		   if ((found_item = hsearch(item,
FIND)) != NULL) {
		    /* if item is in the table */
		     (void)printf("found %s, age = %d, room = %d\n",
			 found_item->key,
			 ((struct info *)found_item->data)->age,
			 ((struct info *)found_item->data)->room);
		   } else {
		     (void)printf("no such employee %s\n",
			 name_to_find);
		   }
     }
}