summaryrefslogtreecommitdiff
path: root/dict.c
diff options
context:
space:
mode:
Diffstat (limited to 'dict.c')
-rw-r--r--dict.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/dict.c b/dict.c
new file mode 100644
index 0000000..2995822
--- /dev/null
+++ b/dict.c
@@ -0,0 +1,57 @@
+/* This file is a part of WordExtract project
+ *
+ * Copyright (C) 2009 Borisov Alexandr
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include "dict.h"
+
+Word *load_dict(FILE *dict)
+{
+ Word *root = NULL;
+ char word[WORDLENGTH] = {0};
+ int i;
+
+ while (!feof(dict)) {
+ fgets(word, WORDLENGTH, dict);
+ if (strcmp(word, "\0") == 0) /*to not process final blank line*/
+ break;
+ word[strlen(word)-1] = '\0';
+ root = add_word_record(root, word);
+ for (i = 0; i < WORDLENGTH; i++)
+ word[i] = 0;
+ }
+ return root;
+}
+
+int is_in_dict(char *word, Word *dic_rec)
+{
+ int cond;
+
+ if (dic_rec == NULL)
+ return NOT_IN_DICT;
+ else {
+
+ if ((cond = strcmp(word, dic_rec->word)) == 0)
+ return IN_DICT;
+ else if (cond > 0)
+ return is_in_dict(word, dic_rec->rsibl);
+ else
+ return is_in_dict(word, dic_rec->lsibl);
+ }
+}
+