/* --------------------------------------------------------------------- ** Figure 16.1: Sequential search of a table. ** Figure 15.16 was adapted to create the read_file() function.. ** --------------------------------------------------------------------- */ #include "tools.h" #define LENGTH 20 int read_file( int data[], int nmax, stream fin ); int sequential_search ( int data[], int n, int key ); void main( void ) { int n; /* # of data items; will be <=LENGTH. */ int items[ LENGTH ]; /* An array for the data to be searched. */ int key; /* Value to search for. */ int where; /* Index where key was found. */ stream fin = fopen( "search.in", "r" ); banner(); if (fin==NULL) fatal( " Fatal error: cannot open search.in." ); printf( " Reading data from search.in.\n"); n = read_file( items, LENGTH, fin ); printf( " %i items were read; beginning to search.\n", n ); for (;;) { printf( " Enter search key (negative to end): " ); scanf( "%i", &key ); if (key<0) break; where = sequential_search( items, n, key ); if (where>=0) printf( " Item: %i \t found in slot %i\n", key, where ); else puts( " Item not found." ); } bye(); } /* ------------------------------------------------------------------------ */ int read_file( int data[], int nmax, stream fin ) { int k; /* subscript variable for loop */ int flag; /* for fscanf() return value */ for (k=0; k