8 Eylül 2007 Cumartesi

Main program for Boyer-Moore-Horspool function

#include 
#include
#include
#include
#define MB 400000
#define MP 256
#define NCOPY 3
char *txtbuf;
int bmhInit(char *txt, int m, char *pat);
int bmhFind(int n, char *txt, int m, char *pat);
main(int argc, char **argv)
{
char patbuf[MP];
FILE *in;
int i, m, n, t0, t1;
int nmatch = 0;
char *txtp, *patp = patbuf + 1;
if (argc < 3) {
fprintf(stderr, "usage: %s pattern file\n", argv[0]);
exit(0);
}
if ((in = fopen(argv[2], "r")) == NULL) {
fprintf(stderr, "cannot open input file: %s\n", argv[2]);
exit(0);
}
strcpy(patp, argv[1]);
m = strlen(patp);
txtbuf = malloc(NCOPY * MB);
txtp = txtbuf + 1;
n = 0;
for (i = 0; i < NCOPY; i++) {
n += fread(txtp + n, sizeof(char), MB, in);
rewind (in);
}
close (in);
bmhInit(txtbuf, m, patbuf);
t0 = clock();
nmatch = bmhFind(n, txtbuf, m, patbuf);
t1 = clock() - t0;
printf("%d matches took %.3f\n", nmatch, (float)t1/CLOCKS_PER_SEC);
}
/* End of File */

Hiç yorum yok: