Hola, tengo problemas con sprintf, y no se que hacer ya, tengo este trozo de código:
Código:
void InsertarDatos(void *arg)
{
Email *nuevo;
char *cuerpo;
pthread_mutex_lock(&b->mutex); //protegiendo la región crítica
(b->nEmails)++;
cuerpo=(char *) malloc (sizeof (char));
nuevo=(Email *) malloc (sizeof (Email));
nuevo->dato.id=b->nEmails;
nuevo->dato.from="xxxx";
sprintf(cuerpo,"Cuerpo del email %d",b->nEmails);
nuevo->dato.body=cuerpo;
nuevo->next=NULL;
.......
Cuando ejecuto obtengo:
Identificador de email: 12576
Remitente: xxxx
Cuerpo del mensaje: Cuerpo del email 1
---------------------------------------
Identificador de email: 12832
Remitente: xxxx
Cuerpo del mensaje: Cuerpo del email 2
---------------------------------------
Y debería ser Identificador de email: 1 y luego 2.
He estado depurando y si miro la variable nuevo->dato.id despues de nuevo->dato.id=b->nEmails; lo saca bien pero despues de hacer el sprintf me saca los otros valores.
A que se debe esto??
Agradecería vuestra ayuda.