⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hash_test.c

📁 在 linux平台上的网页编程的模板
💻 C
字号:
#include "cs_config.h"#include <unistd.h>#include <string.h>#include "util/neo_misc.h"#include "util/neo_err.h"#include "util/neo_hash.h"void dump_string_hash(NE_HASH *hash){  NE_HASHNODE *node;  int x;  for (x = 0; x < hash->size; x++)  {    ne_warn("Node %d", x);    for (node = hash->nodes[x]; node; node = node->next)    {      ne_warn("  %s = %s [%8x | %d]", node->key, node->value, node->hashv, node->hashv & (hash->size - 1));    }  }}NEOERR *dictionary_test (void){  NEOERR *err = STATUS_OK;  int x;  char *word;  NE_HASH *hash = NULL;  FILE *fp;  char buf[256];  err = ne_hash_init(&hash, ne_hash_str_hash, ne_hash_str_comp);  if (err)    return nerr_pass(err);  fp = fopen ("/usr/dict/words", "r");  if (fp == NULL) {    fp = fopen ("/usr/share/dict/words", "r");    if (fp == NULL)      return nerr_raise_errno(NERR_IO, "Unable to open file /usr/dict/words");  }  ne_warn("Loading words into hash");  while (fgets (buf, sizeof(buf), fp) != NULL)  {    x = strlen (buf);    if (buf[x-1] == '\n')      buf[x-1] = '\0';    word = strdup(buf);    err = ne_hash_insert(hash, word, word);    if (err) break;    word = ne_hash_lookup(hash, buf);    if (word == NULL)    {      err = nerr_raise(NERR_ASSERT, "Unable to find word %s in hash", buf);      break;    }    if (strcmp(word, buf))    {      err = nerr_raise(NERR_ASSERT, "Lookup returned wrong word: %s != %s", buf, word);      break;    }  }  fclose (fp);  ne_warn("Loaded %d words", hash->num);  if (err)   {    dump_string_hash(hash);    return nerr_pass(err);  }  fp = fopen ("/usr/dict/words", "r");  if (fp == NULL) {    fp = fopen ("/usr/share/dict/words", "r");    if (fp == NULL)      return nerr_raise_errno(NERR_IO, "Unable to open file /usr/dict/words");  }  ne_warn("Testing words in hash");  while (fgets (buf, sizeof(buf), fp) != NULL)  {    x = strlen (buf);    if (buf[x-1] == '\n')      buf[x-1] = '\0';    if (!(word = ne_hash_lookup(hash, buf)))    {      err = nerr_raise(NERR_ASSERT, "Unable to find word %s in hash", buf);      break;    }    if (strcmp(word, buf))    {      err = nerr_raise(NERR_ASSERT, "Lookup returned wrong word: %s != %s", buf, word);      break;    }  }  fclose (fp);  ne_hash_destroy(&hash);  return nerr_pass(err);}int main(int argc, char **argv){  NEOERR *err;  err = dictionary_test();  if (err)  {    nerr_log_error(err);    printf("FAIL\n");    return -1;  }  printf("PASS\n");  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -