完美hash算法gperf的使用

1. 安装gperf

2. 编写gperf文件,实例如下所示:

%{
#include<stdio.h>
#include<string.h>
%}

struct keyval{
        const char *key;
        int val;
};

%%
if,10 
of,20 
while,30 
case,40 
switch,50 
my,60
%%

int main(int argc, char *argv[])
{
        char *str = argv[1];
        struct keyval *kv = NULL;
        kv = in_word_set(str, strlen(str));
        if (kv)
        {
                printf("%s:%d\n", kv->key, kv->val);
        }

        return 0;
}

3. 将gperf文件生成c文件,命令如下所示:

gperf -t -L C test.gperf > test.c

4. 编译生成的c文件

gcc test.c -o test

(在编译的过程中出现如下错误):

完美hash算法gperf的使用

查看test.gperf后发现没有出现name字段,所以查看生成的test.c文件:

完美hash算法gperf的使用

发现有name字段的出现,并将该字符串替换位自定义结构体中的key。继续编译就可以同通过了。

5. 执行

上一篇:一个字 word 是16位, 一个字由两个字节组成 , 字节=byte ,一个字节8位, 位=bit 如果没有特殊说明kb 就是指 k*bit


下一篇:Go解析Json文件