Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/02/2012, 11:39
Tururu_ru
 
Fecha de Ingreso: agosto-2010
Mensajes: 14
Antigüedad: 13 años, 8 meses
Puntos: 0
Escribir en ficheros

Hola, estoy haciendo un programa en c++ y una de las cosas que quiero hacer es la siguiente:
Imaginaos que hay 5 Threads funcionando al mismo tiempo, y cada uno de ellos puede escribir cuando quiera en un fichero llamado "fichero.txt". Al principio de la ejecución, cada Thread escribe en ese fichero su nombre y su id en distintas filas, por ejemplo:
nombre=Thread1
id=1
Por lo que en un momento de la ejecución, si todos los Thread han escrito por lo menos una vez en el fichero, el archivo quedaría así:
nombre=Thread1
id=1
nombre=Thread2
id=2
nombre=Thread3
id=3
nombre=Thread4
id=4
nombre=Thread5
id=5
Ahora, si durante la ejecución, cada Thread quiere leer su nombre y su id para cambiarlo, ¿cómo puedo hacerlo sin borrar lo que ha escrito otro Thread y reemplazar sólo lo que ha escrito este Thread anteriormente por lo nuevo que quiere escribir? Por ejemplo, si ahora el Thread2 quiere escribir su nombre como Thread6 y su id por 6, tendría que quedar así:
nombre=Thread1
id=1
nombre=Thread6
id=6
nombre=Thread3
id=3
nombre=Thread4
id=4
nombre=Thread5
id=5
Yo he hecho algo así, pero no me funciona:
Para escribir en el fichero (nombreThread contiene el nombre y idThread contiene el id):
fstream f1;
f1.open("fichero.txt", ios::out | ios::app);
sprintf(nombre, "%s%d","nombre=", nombreThread);
sprintf(nombre1, "%s%d","id=", idThread);
// si es el Thread1 el que escribe, escribirá en las dos primeras filas
// si es el Thread2, saltará dos saltos de linea y escribirá en las siguientes
// y así sucesivamente
for(int p=1; p<idThread; p++) {
f1.getline(text, '\n');
f1.getline(text, '\n');
}
f1.write(nombre, 14);
f1 << endl;
f1.write(nombre1, 9);
f1 << endl;
f1.close();
Alguien me podría ayudar? Gracias!!