Code:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <time.h>
typedef struct N {
char x[20];
struct N *next;
} List;
List *insertlist(char word[15], List * b)
{
List *c = calloc(1, sizeof(List));
strcpy( c->x, word );
c->next = b;
return c;
}
int search(char *query,char *query1, List * z)
{
int x=0;
printf( "\nSearching through List for query...\n");
while (z != NULL) {
if ( strcmp(z->x,query) == 0 ) {
x++;
}
z = z->next;
}
if(x==0) {
printf("\nSorry! Your word was not found in the document\n");
}
else
{
printf("\nThe word %s was found %d times.\n", query1,x);
return 0;
}
}
lowercase(char *word) {
int n = strlen(word) + 1;
int i;
for(i=0;i<n;i++){
word[i] = tolower(word[i]);
}
}
int main(int argc, char *argv[])
{
clock_t start, end;
long count;
char word[15];
char query[15];
char query1[15];
int x;
int y;
int c;
List *z = NULL;
FILE *fp;
fp = fopen(argv[1], "r");
c = 0;
while ( (x = fgetc(fp)) != EOF) {
if (isspace(x) || ispunct(x)) {
word[c] = '\0';
c = 0;
lowercase(word);
z = insertlist(word, z);
} else {
word[c] = x;
c = c + 1;
}
}
end = clock();
printf ( "The interval was: %f seconds\n",
(double)( start - end ) / (double)CLOCKS_PER_SEC );
fclose(fp);
printf("\nPlease enter a search query:");
scanf("%s",query);
strcpy(query1,query);
lowercase(query);
search(query,query1, z);
return 0;
}