3
#include <stdio.h>
#include <stdlib.h>
#include <search.h>
#include <assert.h>
char *data[] = { "alpha", "bravo", "charlie", "delta",
"echo", "foxtrot", "golf", "hotel", "india", "juliet",
"kilo", "lima", "mike", "november", "oscar", "papa",
"quebec", "romeo", "sierra", "tango", "uniform",
"victor", "whisky", "x-ray", "yankee", "zulu"
};
int
main(void)
{
ENTRY e, **ep;
struct hsearch_data *htab;
int i;
int resultOfHcreate_r;
resultOfHcreate_r=hcreate_r(30,htab);
assert(resultOfHcreate_r!=0);
hdestroy_r(htab);
exit(EXIT_SUCCESS);
}
錯誤hcreate_r
如何使用GNU hcreate_r
如何使用本hcreate_r
?
和其他問題是:
你能privde GNU擴展C庫的例子? 我覺得GNU擴展C庫的文檔是不夠的知識寫的。
和我有很多關於如何使用擴展C庫的問題。
嗨violet313,謝謝。代碼起作用。但是htab = calloc(30,sizeof(struct hsearch_data));只是分配內存,沒有初始化爲零。不需要初始化爲0? – wei
啊,那就是[calloc]的美麗(http://linux.die.net/man/3/calloc);它會爲你留下記憶〜* * iff *你的'calloc'實現是幸運的* *月亮已滿*星期四*&*當天你看到喜鵲*&*你的分配很大足夠需要整個頁面,,, *然後它甚至可能比'malloc' +'memset'更快*但是在任何情況下它都少了,因此我喜歡它;) – violet313
爲什麼你不去'struct hsearch_data HTAB; memset(&htab,0,sizeof(htab));結果= hcreate_r(30,&htab);'? –