Retreving the dynamically allocated values from bdb using C

In one of the assignment which i am working on, i am am trying to insert keys and values into BDB by reading the input records from a input file as below.
Here keys i am inserting as character buffer and for values i am dynamically allocating the memory using malloc and then inserting into bdb.
But when i try to retireve the inserted values from BDB i am geting only the latest record for Value.

//KEY
char key[512];
//VALUE
typedef struct
{
char *remValues[10];
}valuestr;
static valuestr vstr;
Dbc *dbcObj;
Dbt dbtKey,dbtValue;
// I am dynamically allocating memory for Value str using malloc example as below.
vstr.remValues[0] = (char *)malloc(50);
while(!feof(inFile))
{
//getting key from input file
strcpy(buf, <value1>); //value1 comes from input file
//getting Value from input file
memset(vstr.remValues[0],0,50);
sprintf(vstr.remValues[0],"%d",<value2>); //value2 comes from input file
...........
...........
//Putting values into BDB
dbtKey.set_data((char*) buf);
dbtKey.set_size(strlen(buf));
dbtValue.set_data((valuestr*)&vstr);
dbtValue.set_size(sizeof(valuestr));
int ret = dbObj.put(0,&dbtKey,&dbtValue,DB_NOOVERWRITE);
}

But when i try to retrive the values from BDB its giving proper values for Key but for Value i am getting only the latest value from input file.
Below is the Key value retreival code.

dbObj.cursor(NULL,&dbcObj,0);
char keys[100];
valuestr *values;
while(dbcObj->get(&dbtKey,&dbtValue,DB_NEXT)==0)
{
memset(keys,0,sizeof(keys));
strncpy(keys,(char *)dbtKey.get_data(),strlen(buf));
values = (valuestr *)dbtValue.get_data();
//printing values and keys on to console
}

Can you please suggest how to resolve this ?

That would be the case as you are always loading values into the very first element of the array remValues...instead of filling all 10 of them with values read from the input file...which I highlighted in the code above.