ok! allora :

client.c dichiaro un header di tipo dbp, poi ne apro (se non esiste lo crea) e scrivo dentro qualcosa!

DB *dbp;
openDB(&dbp);
scriviDB(&dbp);

quì chiamo la cerca:

fgets(search, 200, stdin);
vettlibro vett;
cercaDBAutore(&dbp, vett, search);

quì apro :

int openDB(DB **dbpp) {
// dichiaro riferimento al database, flag per il database (typedef unsigned int u_int32_t), valore di ritorno
DB *dbp;
u_int32_t flags;
int ret;

// creo il riferimento per il mio database
ret = db_create(&dbp, NULL, 0);
if (ret != 0) {
// quì vanno implementati gli errori
}

// creo il flag per il mio database (DB_CREATE : se non esiste, lo crea)
flags = DB_CREATE;

*dbpp=dbp;

// imposto database per supportare dei duplicati
ret = dbp->set_flags(dbp, DB_DUPSORT);
if (ret != 0) {
// quì vanno implementati gli errori
//dbp->err(dbp, ret, "Attempt to set DUPSORT flag failed.");
//dbp->close(dbp, 0);
//return(ret);
}

// apro il database. specifico :
// riferimento, NULL (transaction pointer), nome database, NULL (nome logico),
// metodo di accesso, flag, filemode (0 default)
ret = dbp->open(dbp, NULL, "database.db", NULL, DB_BTREE, DB_CREATE, 0);
if (ret != 0) {
// quì vanno implementati gli errori
}
return 0;
}

quì scrivo dentro qualcosa :

void scriviDB(DB **dbpp) {
// imposto alcune variabili che mi serviranno per scrivere/leggere
// inoltre dichiaro la struct che mi definisce il tipo oggetto libro
libro book;
strcpy(book.titolo, "leopardi");
strcpy(book.autore, "leopardi");
strcpy(book.keywords, "leopardi");
strcpy(book.anno, "leopardi");
strcpy(book.ISBN, "leopardi");

DB *dbp;
dbp=*dbpp;

int ret;
DBC *cursorp;
DBT key, data;
char type[3]="usr";

// azzero i DBTs prima di usarli
memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));

key.data = &type;
key.size = sizeof(char);
data.data = &book;
data.size = sizeof(libro);

// inserisce i dati (0 alla fine singifica niente flags. li inserisce anche doppi)
ret = dbp->put(dbp, NULL, &key, &data, 0);
//if (ret == DB_KEYEXIST) {
// dbp->err(dbp, ret, "Put failed because key %f already exists", type);
//}
}

e poi per cercarli il codice è quello sopra! la struct è definita così :

// struttura oggetto libro
typedef struct Libro {
char titolo[200];
char autore[200];
char keywords[200];
char anno[200];
char ISBN[200];
} libro, vettlibro[50];

credo sia tutto quello che ti serva, spero