[Home]
[Contents]
[Chapter]
[Previous Algorithm]
[Next Algorithm]


Composition to search external text files (Pascal version available)


#define TRUE 1 #define NULL 0 #define EOS 0 #define MAXPATLEN 100 #define MAXCHAR 128 char *search (); int max(a,b) int a,b; { return( a>b ? a : b ); } int count = {0}; main() { int fd, i, m, n; char *s, *t, *p; s = "aaaaaaaaaaaaaaab"; t = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; p = search(s,t); m = strlen(s); n = strlen(t); printf("searching %s in %s, returns=%d, strlen(s)=%d, strlen(t)=%d\n", s, t, p, m, n ); printf("total comparisons = %d, max=%d, min=%d\n",count,m*(n-m+2)-1,n); exit(0); } char *search( pat, text ) char *pat, *text; { char *p; if( *pat == EOS ) return( text ); for( p=pat; *text != EOS; text++ ) { if( (count++, *text != *p) ) { text -= (p-pat); p = pat; } else if( *(++p) == EOS ) return( text - (p-pat) + 1 ); } return( NULL ); }

C source (711.wc.c) Pascal source (711.wc.p)



© Addison-Wesley Publishing Co. Inc.