Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda para sobreescribir archivos

Estas en el tema de Ayuda para sobreescribir archivos en el foro de C/C++ en Foros del Web. Necesito sobreescribir un archivo en C y lo unico que consigo es que me reescriba la salida que deseo al final de lo que ya ...
  #1 (permalink)  
Antiguo 06/02/2008, 10:22
 
Fecha de Ingreso: febrero-2008
Mensajes: 1
Antigüedad: 16 años, 2 meses
Puntos: 0
Ayuda para sobreescribir archivos

Necesito sobreescribir un archivo en C y lo unico que consigo es que me reescriba la salida que deseo al final de lo que ya tenia escrito.
Mi programa es el siguiente:

printf("\nIntroduzca la posicion del experimento que desea eliminar: ");
scanf("%d",&pos_borrar);
for(i=pos_borrar-1;i<filas;i++)
for(j=0;j<19;j++)
matriz[i][j]=matriz[i+1][j];
filas=filas-1;
posicion=ftell(datos);
fseek(datos,posicion,SEEK_SET);
for(i=0;i<filas;i++)
for(j=0;j<19;j++){
fwrite(&matriz[i][j],sizeof(matriz[i][j]),1,datos);
}
fclose(datos);
break;


Utilizo el fseek para mandarlo al principio del archivo y supuestamente el fwrite deberia escribir desde la posicion en la que me encuentro, pero no entiendo el porque escribe desde la ultima posicion.

Gracias.
  #2 (permalink)  
Antiguo 07/02/2008, 02:46
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Re: Ayuda para sobreescribir archivos

Podrías poner el código de la llamada a fopen? Puede ser que lo hayas abierto en modo "añadir"? (a-ppend)
  #3 (permalink)  
Antiguo 13/02/2008, 14:30
 
Fecha de Ingreso: febrero-2008
Mensajes: 11
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Ayuda para sobreescribir archivos

para mover el puntero al principio del archivo debes usar:

fseek(datos, 0, SEEK_SET) y no fseek(datos, posicion, SEEK_SET)

ya que el segundo parámetro te indica el número de bytes a desplazarse a partir del origen, que es el tercer parámetro.

también podrías usar la función rewind(datos), que directamente inicializa el indicador del posición al principio del archivo.

espero q te sirva, un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 01:22.