Il mio codice attualmente simile a questa (questi passaggi suddivise in molteplici funzioni):chiaro/troncare file in C, quando già aperto in modalità "R +"
/* open file */
FILE *file = fopen(filename, "r+");
if(!file) {
/* read the file */
/* modify the data */
/* truncate file (how does this work?)*/
/* write new data into file */
/* close file */
fclose(file);
}
So che avrei potuto aprire il file con in "w"
modalità, ma non voglio farlo in questo caso. So che esiste una funzione ftruncate
in unistd.h
/sys/types.h
, ma non voglio usare queste funzioni il mio codice dovrebbe essere altamente portatile (anche su Windows).
Esiste la possibilità di cancellare un file senza chiuderlo/riaprirlo?
OP desidera una soluzione indipendente dalla piattaforma e non desidera riaprire il file. E usa ancora r +. :) – askmish
@askmish Che non è possibile :-P –
@Nkos: È possibile, ma la soluzione ottimale sarebbe davvero complessa (che coinvolge le chiamate del kernel, utilizzando meccanismi bufferizzati, ecc.), Che dato la domanda di OP sembra eccessivo. :( – askmish