私は C で gnu gdbm プログラミングを学ぼうとしていますが、gdbm チュートリアルや本などが不足しているため先に進むことができません。2 つの別々の .c ファイルを使用して次のコードを作成およびコンパイルしましたが、データベース "testdb" からデータを取得できないため、どこが間違っているか教えてください。最初に文字列を格納し、2 番目の部分でデータをフェッチします。出力は次のとおりです。キーが見つかりません。
#include <stdio.h>
#include <gdbm.h>
#include <stdlib.h>
#include <string.h>
int
main(void)
{
GDBM_FILE dbf;
datum key = { "testkey", 7 }; /* key, length */
datum value = { "testvalue", 9 }; /* value, length */
printf ("Storing key-value pair... \n");
dbf = gdbm_open("testdb", 0, GDBM_NEWDB,0666, 0);
gdbm_store (dbf, key, value, GDBM_INSERT);
printf ("key: %s size: %d\n", key.dptr, key.dsize);
gdbm_close (dbf);
printf ("done.\n\n");
dbf = gdbm_open("testdb", 0, GDBM_READER, 0666, 0);
if (!dbf)
{
fprintf (stderr, "File %s either doesn't exist or is not a gdbm file.\n", "testdb");
exit (1);
}
key.dsize = strlen("testkey") + 1;
value = gdbm_fetch(dbf, key);
if (value.dsize > 0) {
printf ("%s\n", value.dptr);
free (value.dptr);
}
else {
printf ("Key %s not found.\n", key.dptr);
}
gdbm_close (dbf);
return 0;
}