Pagina 1 di 1

[C] Comando per pulire un file ogni volta che lo si apre [R]

Inviato: martedì 20 maggio 2014, 9:25
da FranxT
Salve a tutti

Sto scrivendo un programma in C che scrive delle colonne di dati su numerosi file ogni volta che viene eseguito.
Ogni volta che lo eseguo, però, aggiunge i nuovi dati al file senza cancellare quelli relativi all'esecuzione precedente, mentre io vorrei che ogni volta i file contenessero solo i dati relativi all'ultima esecuzione.
Conoscete un comando che permette di rendere il file vuoto, insomma di ripulirlo, in modo che ad ogni esecuzione il programma prima resetti il file e poi ci scriva sopra?

Vi ringrazio!

Re: [C] Comando per pulire un file ogni volta che lo si apre

Inviato: martedì 20 maggio 2014, 9:27
da Zoff
Con che flag invochi la fopen?

Re: [C] Comando per pulire un file ogni volta che lo si apre

Inviato: martedì 20 maggio 2014, 9:37
da FranxT
Per aprire il file scrivo

FILE *nomefile;
nomefile=fopen("nomefile","r+");

Re: [C] Comando per pulire un file ogni volta che lo si apre

Inviato: martedì 20 maggio 2014, 9:48
da Zoff
In scrittura intendevo.
Comunque basta togliere il +

Re: [C] Comando per pulire un file ogni volta che lo si apre

Inviato: martedì 20 maggio 2014, 9:54
da FranxT
Scusami se tolgo il + mi apre il file in sola lettura, e io invece devo scriverci sopra.
Intendevi che dovrei scrivere solo "w"?

Comunque quando scrivo su file uso il comando

fprintf(nomefile, "stringa", variabili);

Re: [C] Comando per pulire un file ogni volta che lo si apre

Inviato: martedì 20 maggio 2014, 9:57
da Zoff
Si, scrivi solo w

Re: [C] Comando per pulire un file ogni volta che lo si apre

Inviato: martedì 20 maggio 2014, 12:26
da vbextreme
ma sarà w+ se ha usato r+ prima!

Re: [C] Comando per pulire un file ogni volta che lo si apre

Inviato: martedì 20 maggio 2014, 12:43
da Zoff
Che scelga quello che gli è piu' congeniale secondo la documentazione:
http://www.cplusplus.com/reference/cstd ... parameters

L'utente non ha mai parlato di lettura quindi mi è sembrato ovvio suggerire w.

Re: [C] Comando per pulire un file ogni volta che lo si apre

Inviato: martedì 20 maggio 2014, 13:03
da FranxT
No infatti non devo leggerli, devo solo scrivere su più file. Tra l'altro credo che r+ sia uguale a w+.....permettono entrambi lettura e scrittura.
Ho provato solo con w e sembra che faccia quello che voglio.
Magari, dopo aver provato qualche altra volta, aggiungo "risolto" nel titolo della discussione.

Grazie mille!

Re: [C] Comando per pulire un file ogni volta che lo si apre

Inviato: martedì 20 maggio 2014, 13:10
da Zoff
r+ non è uguale a w+, r+ non cancella il contenuto.
tanto tanto r+ è simile a a+, entrambi leggono e scrivono e conservano il contenuto, solo che r+ inizia a scrivere dall'inizio del file, a+ dalla fine.

Re: [C] Comando per pulire un file ogni volta che lo si apre

Inviato: martedì 20 maggio 2014, 13:40
da FranxT
Grazie anche del chiarimento finale!