#include #include #include #include "dictionary.h" #define MAX_LINE_SIZE 1024 int read_command_line(const char *argv[], char * p, int max_args) { int res = 0; while(res < max_args) { while(isspace(*p)) ++p; if (*p == 0) return res; argv[res++] = p++; while(*p != 0 && !isspace(*p)) ++p; if (*p == 0) return res; *p++ = 0; } return res; } #define MACRO_STRING(x) #x int read_dictionary(const char * filename) { FILE * f = fopen(filename, "r"); if (!f) return -1; int res = 0; char line[256]; while(fscanf(f, "%256s", line) > 0) { if (dictionary_add(line)) ++res; } fclose(f); return res; } int main() { char line[MAX_LINE_SIZE]; dictionary_init(); while(fgets(line, MAX_LINE_SIZE, stdin)) { const char * argv[2]; int argc = read_command_line(argv, line, 2); if (argc > 0 && strcmp(argv[0], "clear") == 0) { printf("clearing..."); dictionary_clear(); printf("done\n"); continue; } if (argc > 0 && strcmp(argv[0], "quit") == 0) { dictionary_clear(); return 0; } if (argc > 1 && strcmp(argv[0], "add") == 0) { if (dictionary_add(argv[1])) printf("added %s\n", argv[1]); else fprintf(stderr, "could not add word."); continue; } if (argc > 1 && strcmp(argv[0], "?") == 0) { if (dictionary_search(argv[1])) printf("YES\n"); else printf("NO\n"); continue; } if (argc > 1 && strcmp(argv[0], "read") == 0) { int res = read_dictionary(argv[1]); if (res < 0) { perror("could not read dictionary"); } else { printf("%d words added from %s\n",res, argv[1]); } continue; } fprintf(stderr, "commands:\n" "\tclear\n" "\t? \n" "\tadd \n" "\tread \n" "\tquit\n"); } dictionary_clear(); return 0; }