C/Visual C - archivos

 
Vista:

archivos

Publicado por fran (8 intervenciones) el 08/01/2001 00:00:00
tengo un archivo *.DAT creado con los tipicos comandos de fopen.....,en el archivo solo me aparece una fila y ahí es donde almaceno todos los datos,pero a la hora de modificarlos lo hago direccionando una variable global y le indico la fila donde escribir y ahi es donde tengo el problema:
si el archivo lo creo con el operando "a+",siempre que modifique algo,me añade una nueva fila y no me escribe donde yo quiero,y si el operando es "w+",me crea un nuevo archivo,y borra todos los datos anteriores,¿como podria escribir exectamente en la fila que yo quiero sin que borre nada?
GRACIAS.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:archivos

Publicado por Cris (11 intervenciones) el 09/01/2001 00:00:00
Puedes usar el r+, con esto solucionas tu problema, solo que el archivo debe existir, si no te mandara error, pero eso lo validas al principio.

void main(){
FILE f;
if((f=fopen("tuarchivo.dat","r+"))==NULL)
printf("No se encontro el archivo");
else{
.
.
//codigo de tu programa
.
}
}

Espero te sirva

Saludos

Cristina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:archivos

Publicado por Daniel Wyrytowski (4 intervenciones) el 19/01/2001 00:00:00
Mira, en realidad no es tan sencillo, si vos queres escribir un codigo que sobreescriba un lugar determinado de un archivo tenes que primero buscar el offset donde esta el primer byte que queres modificar. El offset seria la cantidad de bytes que hay antes de llegar al lugar donde vos quieras escribir. entonces tendrias que usar dos pasos:
1) abrir el archivo como lectura, leer linea por linea y calcular la cantidad de bytes que hay hasta el lugar donde queres modificar.
2) abrir como escritura el archivo, y usar la funcion fseek (); para ubicarte en el offset justo y recien ahi hacer un fprintf(); o lo que vayas a usar...
Bye. Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar