Use nocase string as g_hash_table's key

博客给出了 GHashTable 的示例代码。代码中定义了打印条目、哈希函数和比较函数,在 main 函数里创建 GHashTable 并插入条目,最后打印内容。还给出了使用 gcc 编译代码的命令。
部署运行你感兴趣的模型镜像

/* ghashtabledemo.c -- GHashTable demo */

#include <glib.h>
#include <string.h>

void print_entry(gpointer key, gpointer data, gpointer user_data)
{
  /* user_data not used */
  g_print("key: %-10s     value: %-10s/n", (gchar *)key, (gchar *)data);
}

guint g_str_case_hash (gconstpointer key) {
 gchar *upkey = g_ascii_strdown (key, strlen(key));
 guint hash = g_str_hash (upkey);
 g_free (upkey);
 return hash;
}

gboolean g_str_case_equal (gconstpointer a, gconstpointer b) {
 if (!g_ascii_strcasecmp (a, b))
  return TRUE;
 else
  return g_str_equal (a, b);
}

int main(int argc, char *argv[])
{
  GHashTable *hash1;
 
  hash1 = g_hash_table_new(g_str_case_hash, g_str_case_equal);

  /* insert a bunch of entries */
  g_hash_table_replace(hash1, g_strdup("foo"), g_strdup("bar"));
  g_hash_table_replace(hash1, g_strdup("FoO"), g_strdup("BAR"));
  g_hash_table_replace(hash1, g_strdup("more"), g_strdup("junk"));

  /* print the contents */
  g_print("Hash table entries:/n");
  g_hash_table_foreach(hash1, print_entry, NULL);

  return 0;
}

/*
 * gcc -ansi -Wall `pkg-config glib-2.0 --cflags` -o test test.c  `pkg-config glib-2.0 --libs`
 */

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

CREATE TABLE "subtitles" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "user_id" INTEGER NOT NULL, "subtitle_path" TEXT NOT NULL, "subtitle_title" TEXT, "video_id" INTEGER, "create_time" TIMESTAMP DEFAULT (datetime('now', 'localtime')) ); CREATE TABLE "words" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "word" TEXT NOT NULL COLLATE NOCASE, "word_linked_id" INTEGER, "word_linked" TEXT COLLATE NOCASE, "lemma" TEXT, "collins_frequency" INTEGER DEFAULT 0, "coca_rank" INTEGER DEFAULT 0, "ielts" INTEGER DEFAULT 0, "toefl" INTEGER DEFAULT 0, "gre" INTEGER DEFAULT 0, "kaoyan" INTEGER DEFAULT 0, "cet4" INTEGER DEFAULT 0, "cet6" INTEGER DEFAULT 0, "tem4" INTEGER DEFAULT 0, "tem8" INTEGER DEFAULT 0, "concise_sense" TEXT, "inflections" TEXT, "longman_data" JSON, "little_dict_data" JSON ); CREATE TABLE "user_ignored_words" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "user_id" INTEGER NOT NULL, "word_id" INTEGER NOT NULL, FOREIGN KEY ("word_id") REFERENCES "words" ("id") ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE "user_sentences" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "user_id" INTEGER NOT NULL, "video_path" TEXT COLLATE NOCASE, "video_title" TEXT COLLATE NOCASE, "subtitle_path" TEXT COLLATE NOCASE, "subtitle_title" TEXT COLLATE NOCASE, "text_original" TEXT NOT NULL COLLATE NOCASE, "text_translated" TEXT, "video_clip" TEXT COLLATE NOCASE, "audio_clip" TEXT COLLATE NOCASE, "start_time" REAL, "end_time" REAL, "sentence_note" TEXT COLLATE NOCASE, "create_time" TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE "user_sentence_sense_ref" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "user_id" INTEGER NOT NULL, "user_sentence_id" INTEGER NOT NULL, "word_id" INTEGER NOT NULL, "sense_id" INTEGER NOT NULL, "example_id" INTEGER, "create_time" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY ("word_id") REFERENCES "words" ("id") ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ("user_sentence_id") REFERENCES "user_sentences" ("id") ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE "user_words" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "user_id" INTEGER NOT NULL, "word_id" INTEGER NOT NULL, "word" TEXT NOT NULL COLLATE NOCASE, "word_note" TEXT, "familiarity" INTEGER DEFAULT 0, "query_count" INTEGER DEFAULT 0, "create_time" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY ("word_id") REFERENCES "words" ("id") ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE "videos" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "user_id" INTEGER, "video_path" TEXT NOT NULL, "video_title" TEXT, "video_description" TEXT, "video_duration" INTEGER, "create_time" TIMESTAMP DEFAULT (datetime('now', 'localtime')) ); CREATE INDEX "idx_ignored_user_id_word_id" ON "user_ignored_words" ( "word_id" ASC, "user_id" ASC ) ; CREATE INDEX "idx_user_id_word" ON "user_words" ( "word" ASC, "user_id" ASC ) ; CREATE UNIQUE INDEX "idx_user_id_word_id" ON "user_words" ( "word_id" ASC, "user_id" ASC ) ; CREATE INDEX "idx_word" ON "words" ("word" ASC) ; CREATE UNIQUE INDEX "unique_sentence" ON "user_sentences" ( "text_original" ASC, "user_id" ASC ) ; CREATE UNIQUE INDEX "unique_sentence_sense" ON "user_sentence_sense_ref" ( "user_id" ASC, "user_sentence_id" ASC, "word_id" ASC, "sense_id" ASC, "example_id" ASC ) ; CREATE UNIQUE INDEX "unique_subtitle_path" ON "subtitles" ( "subtitle_path" ASC, "user_id" ASC ) ; CREATE UNIQUE INDEX "unique_video_path" ON "videos" ( "video_path" ASC, "user_id" ASC ) ; 导出到excel文件中,表名作为sheet页名,增加一列汉语含义
最新发布
07-02
CREATE TABLE "subtitles" ( "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "user_id" INTEGER NOT NULL, "subtitle_path" TEXT, "subtitle_title" TEXT, "video_id" INTEGER, "create_time" TIMESTAMP DEFAULT (datetime('now', 'localtime')), UNIQUE ("subtitle_path" ASC) ON CONFLICT FAIL ); CREATE UNIQUE INDEX "unique_subtitle_path" ON "subtitles" ( "subtitle_path" ASC, "user_id" ASC ); CREATE TABLE "user_ignored_words" ( "id" INTEGER NOT NULL, "user_id" INTEGER NOT NULL, "word_id" INTEGER NOT NULL, PRIMARY KEY ("id"), FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ("word_id") REFERENCES "words" ("id") ON DELETE CASCADE ON UPDATE CASCADE ); CREATE INDEX "idx_ignored_user_id_word_id" ON "user_ignored_words" ( "user_id" ASC, "word_id" ASC ); CREATE TABLE "user_sentence_sense_ref" ( "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "user_id" INTEGER NOT NULL, "user_sentence_id" INTEGER NOT NULL, "word_id" INTEGER NOT NULL, "sense_id" INTEGER NOT NULL, "example_id" INTEGER, "create_time" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY ("sense_id") REFERENCES "senses" ("id") ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ("example_id") REFERENCES "sense_examples" ("id") ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ("user_sentence_id") REFERENCES "user_sentences" ("id") ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT "fk_user_sentence_sense_ref_words_5" FOREIGN KEY ("word_id") REFERENCES "words" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION ); INSERT INTO "sqlite_sequence" (name, seq) VALUES ('user_sentence_sense_ref', '310'); CREATE UNIQUE INDEX "unique_sentence_sense" ON "user_sentence_sense_ref" ( "user_id" ASC, "user_sentence_id" ASC, "word_id" ASC, "sense_id" ASC, "example_id" ASC ); CREATE TABLE "user_sentences" ( "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "user_id" INTEGER NOT NULL, "video_path" TEXT COLLATE NOCASE, "video_title" TEXT COLLATE NOCASE, "subtitle_path" TEXT COLLATE NOCASE, "subtitle_title" TEXT COLLATE NOCASE, "text_original" TEXT NOT NULL COLLATE NOCASE, "text_translated" TEXT, "video_clip" TEXT COLLATE NOCASE, "audio_clip" TEXT COLLATE NOCASE, "start_time" REAL, "end_time" REAL, "sentence_note" TEXT COLLATE NOCASE, "create_time" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE ); INSERT INTO "sqlite_sequence" (name, seq) VALUES ('user_sentences', '432'); CREATE UNIQUE INDEX "unique_sentence" ON "user_sentences" ( "user_id" ASC, "text_original" ASC ); CREATE TABLE "user_words" ( "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "user_id" INTEGER NOT NULL, "word_id" INTEGER NOT NULL, "word" TEXT NOT NULL COLLATE NOCASE, "word_note" TEXT, "familiarity" integer, "query_count" integer, "create_time" DATE, FOREIGN KEY ("word_id") REFERENCES "words" ("id") ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE ); INSERT INTO "sqlite_sequence" (name, seq) VALUES ('user_words', '313'); CREATE INDEX "idx_user_id_word" ON "user_words" ( "user_id" ASC, "word" ASC ); CREATE UNIQUE INDEX "idx_user_id_word_id" ON "user_words" ( "user_id" ASC, "word_id" ASC ); CREATE TABLE "videos" ( "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "user_id" integer, "video_path" TEXT, "video_title" TEXT, "video_description" TEXT, "video_duration" integer, "create_time" TEXT, FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE SET NULL ON UPDATE CASCADE, UNIQUE ("video_path" ASC) ON CONFLICT FAIL ); INSERT INTO "sqlite_sequence" (name, seq) VALUES ('videos', '412'); CREATE UNIQUE INDEX "unique_video_path" ON "videos" ( "video_path" ASC, "user_id" ASC ); CREATE TABLE "words" ( "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "word" TEXT NOT NULL COLLATE NOCASE, "word_linked_id" INTEGER, "word_linked" TEXT COLLATE NOCASE, "lemma" TEXT, "collins_frequency" integer DEFAULT 0, "coca" integer DEFAULT 0, "ielts" integer DEFAULT 0, "gre" integer DEFAULT 0, "toefl" integer DEFAULT 0, "cet4" integer DEFAULT 0, "cet6" integer DEFAULT 0, "tem4" integer DEFAULT 0, "tem8" integer DEFAULT 0, "kaoyan" integer DEFAULT 0, "sense_proportion" TEXT, "inflection" TEXT ); INSERT INTO "sqlite_sequence" (name, seq) VALUES ('words', '917009'); CREATE INDEX "idx_word" ON "words" ( "word" ASC ); 生成ER关系图,svg格式
07-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值