2011-01-27 12 views
16

Ho un file con alcuni dati dell'utente1. Voglio utilizzare lo stesso file per utente2 cancellando il contenuto del file.Come si cancella l'intero contenuto di un file in C?

La mia idea è che quando arriva un nuovo utente, i dati dell'utente precedente devono essere chiari e lo stesso file dovrebbe essere pronto per il nuovo utente.

risposta

31

Come @stefan detto usando fopen() con la modalità "w" farà il lavoro per voi. Quando apri un file con il flag "w", crea un file vuoto per la scrittura. Se esiste già un file con lo stesso nome, i suoi contenuti vengono cancellati e il file viene trattato come un nuovo file vuoto.

Se il file è già aperto è possibile utilizzare la funzione freopen() da stdio.h con la modalità "w" come sarà prima chiudere il file e quindi riaprirlo per scrivere cancellazione tutto ciò che era nel file precedentemente.

14

con fopen(filename, flag) basta aprirlo con bandiera = "w" o "wb" e verranno cancellati

+0

thanx Stefan, ma voglio cancellare il file CON FORZA (esplicitamente) – mujahid

+1

questo è quello che Stefan ha detto. – Rozuur

+0

ok gys !! ma durante il prog exec. em apertura/chiusura (aggiunta) molte volte. IWANT TO CLEAR THE FILE SOLTANTO QUANDO ALCUNE condizioni si verificano. – mujahid

3

Ci sono due modi:

1. fd=open(filename,O_RDONLY | O_WRONLY | O_TRUNC); 


2. [cat /dev/null > filename] for BASH. It can be directly used in c program using [system()] system call. 

    system("cat /dev/null > filename"); 
+0

FYI: il secondo è Bourne shell, non C. – michaelb958

+0

Inoltre, il secondo può essere sostituito con una singola chiamata a 'truncate() ', che sostituisce il gatto inutile. – Hasturkun

+1

Da 'man 2 open':' A differenza degli altri valori che possono essere specificati nei flag, i valori della modalità di accesso O_RDONLY, O_WRONLY e O_RDWR non specificano singoli bit. Piuttosto, definiscono l'ordine basso due bit di flag e sono definiti rispettivamente come 0, 1 e 2. In altre parole, la combinazione O_RDONLY | O_WRONLY è un errore logico, e certamente non ha lo stesso significato di O_RDWR. Quindi, specificando 'O_RDONLY | O_WRONLY', stai impostando i 2 bit di ordine basso su 3 anziché su 2. L'utilizzo di 3 è definito dall'implementazione e varia tra i sistemi. –

8
fclose(fopen("file.txt", "w")); 

perché questo funziona:

scrittura: creare un file vuoto per le operazioni in uscita. Se esiste già un file con lo stesso nome, il suo contenuto viene scartato e il file viene considerato come un nuovo file vuoto.

(citazione da http://www.cplusplus.com/reference/cstdio/fopen/)

Problemi correlati