Bonjour,

Je ne comprends pas pourquoi le code minimaliste suivant ne fonctionne pas ?
ca marche avec get mais pas avec seq (il m'affiche toute la base)
merci d'avance :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <db_185.h>
 
int main()
{
	DB *db;
	DBT key,data;
	char bkey[1000],bdata[1000];
	int i;
 
	unlink("test.db");
	db = dbopen("test.db", O_CREAT|O_RDWR, 0644, DB_BTREE, NULL);
	key.data = bkey;
	data.data = bdata;
	key.size=4;
	data.size=6;
	for ( i = 0; i < 10; i++)
	{
		sprintf(bkey,"key%d",i);
		sprintf(bdata,"data%d",i);
 
		db->put(db,&key,&data,0);
	}
	db->close(db);
 
	db = dbopen("test.db", O_RDONLY, 0, 0, NULL);
 
	sprintf(bkey,"key3");
	key.size = 4;
 
	while (!db->seq(db,&key,&data,R_NEXT))
	{
		printf("%s\n",data.data);
	}
}