gnu gdbm 프로그래밍을 배우려고하는데 gdbm 튜토리얼, 책 등의 부족으로 인해 진행할 수 없으므로 따라야 할 유일한 것은 몇 가지 간단한 gdbm c api 코드입니다 w3에서 사용 가능. 나는 두 개의 분리 된 .c 파일을 사용하여 다음 코드를 작성하고 컴파일했지만 데이터베이스 "testdb"에서 데이터를 가져올 수 없으므로 어디서 잘못되었는지 말해주십시오. 먼저 은 문자열을 저장하고 두 번째 부분에서는 데이터를 가져옵니다. 출력은; 키를 찾을 수 없습니다.gdbm 프로그래밍 with C
#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;
}
** 친절한 도움을 주셔서 대단히 감사합니다. ** 이제 괜찮습니다. 그러면 원하는 출력이 제공됩니다. 다음 두 개의 .c 파일에서 내용을 가져 왔습니다. http://www.network-theory.co.uk/docs/gccintro/gccintro_22.html이 파일을 기반으로 작성한 데이터 및 가져 오기 부분을 저장하는 데 사용되었습니다. http : //www-rohan.sdsu.edu/doc/gdbm/example.html 나는 그들이 왜 보이지 않는지 그들의 코드 (network-theory.co.uk)에 두 개의 문자열 끝에 NULL 문자를 추가하지 않은지 궁금하다. '\ 0'없이 데이터를 저장한다. – Bishnu
** 다시 한 번 감사드립니다. ** 요점이 있습니다. 나는 지난 24 시간 동안 문제를 풀려고 노력하면서 피로감으로 인해이를 눈치 채지 못했습니다 (때로는 gdb-gdb가 키 크기가 <0이었고 이유를 찾을 수없는 것으로 나타났습니다). 그러나 당신의 도움과 호의없이, gdbm이나 c에서 어떤 경험도 없기 때문에 나는 그것을 풀 수 없을 것입니다. 감사. – Bishnu
@ 비슈누 : 오신 것을 환영합니다. 이 페이지가 유용 할 수도 있습니다 : http://stackoverflow.com/tags/c/info.C 프로그래밍 언어 (Second Edition) "를 읽어 보시기 바랍니다. (C89 표준을 위해 작성되었지만 마음에 들지만 여전히 책입니다.) 또한 "전문가 C 프로그래밍 : Deep C Secrets"에는 언어와 그 역사에 대한 흥미로운 사실이 몇 가지 있습니다. "왜 그런가?"- 학습 할 때 매우 유용 할 수 있습니다. – Morpfh