Programación General > C/C++
Escribiendo en un fichero
(1/1)
lydia_watanabe:
Hola a todos
En una aplicación que estoy haciendo tengo que escribir en un fichero, pero tengo un problema.
La situación es la siguiente, tengo un fichero ya creado, por ejemplo este:
--- Código: Text ---1 100 (1,8,3)4 20 ()2 40 (2,6)
Y se me presentan dos situaciones, la de escribir al final de una linea y la de sobreescribir un dato.
Supongamos la situación 1 que la de escribir al final de una linea:
--- Código: C++ ---fstream Fich("students.txt", ios::in | ios::out); // Va leyendo los datos, hace diversas cosas con ellas y llega al final de la linea long lon = Fich.tellg();Fich.seekp(lon, ios::beg);Fich << " OK" << endl;
Al hacer esto obtengo como resultado lo siguiente:
--- Código: Text ---1 100 (1,8,3) OK0 ()2 40 (2,6)
Lógicamente no es el resultado que esperaba pues he perdido parte de la informacón de la segunda linea y eso no me intersa. ¿Qué puedo hacer para solucionar este problema?
Con respecto a la segunda situación, la de sustituir un valor, lo que me interesa es borrar un valor, por ejemplo el 100, del fichero y en base a unos parámetros o poner un valor distinto o no poner nada, lo que quedaría algo así:
No poner nada
--- Código: Text ---1 (1,8,3)4 20 ()2 40 (2,6)
Sustituir por otro valor
--- Código: Text ---1 12 (1,8,3)4 20 ()2 40 (2,6)
¿Sería esto posible? cómo lo puedo hacer.
betopin:
Para amboss casos yo haria lo mismo...guardaria la informacion en un array bidimensional operando el fichero en modo lectura y acorde a las modificaciones hechas desde EL ARREGLO, sobreescribiria el archivo en modo W...creo que para el casoes mejor porque tendrias acceso desde el array linea a linea....
m0skit0:
Yo también estoy de acuerdo con betopin: creo que cargar primero los datos en una estructura de datos, manipularlos y volver a escribirlos es la mejor forma de hacerlo, más que estar usando seekp().
Salud
lydia_watanabe:
Hombre, como solución no está mal, pero aunque este ejemplo es sencillo sólo con tres lineas, se supone que el archivo será sustancialmente mayor y sinceramente no me parece una buena opción, pues sería mucho trabajo extra y en muchos de los casos innecesario, pues hacer la escritura, ya no es necesario seguir leyendo el archivo, porque se han dado las condiciones necesarias.
m0skit0:
--- Cita de: "lydia_watanabe" ---pues sería mucho trabajo extra y en muchos de los casos innecesario, pues hacer la escritura, ya no es necesario seguir leyendo el archivo, porque se han dado las condiciones necesarias.
--- Fin de la cita ---
Ok, pero yo no he dicho en ningun caso que haya que leer todo el fichero. Puedes hacerlo línea por línea y reescribir líneas enteras.
Salud
Navegación
Ir a la versión completa