C++ come faccio a cancellare un file se vuoto?

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Almucantarat
Linux 1.x
Linux 1.x
Messaggi: 132
Iscritto il: ven 15 apr 2005, 0:00

C++ come faccio a cancellare un file se vuoto?

Messaggio da Almucantarat »

Ciao, volevo sapere come posso fare a cancellare un file se questo è vuoto (e solo in questo caso)

Grazie

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

basta che trovi il filesize, e se questo è == 0, chiami remove (o unlink) sul file. non conosco le classi del c++ x fare questo, ma in c puoi fare (anche se è un mezzo hack):

if (fp = fopen ("antani", "r")) {
fseek (fp, SEEK_END, 0);
size = ftell (fp);
fclose (fp);
if (size == 0)
remove ("antani");
}

al posto del truschino fseek/ftell puoi direttamente usare la syscall stat x ottenere il filesize.

Almucantarat
Linux 1.x
Linux 1.x
Messaggi: 132
Iscritto il: ven 15 apr 2005, 0:00

Messaggio da Almucantarat »

grazie!

ho provato ad aggiungere il codice al programma, ma ho in ritorno i seguenti errori:

`fp' undeclared (first use this function)
assignment of read-only variable `size'

come li elimino?

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

be', dovresti provare a capire cosa succede, invece di copiare ciecamente.

fp e size vanno dichiarati, rispettivamente come:
FILE *fp;
unsigned long int size; (o qualcosa di simile);

tra l'altro forse devi cambiare nome a size, fai delle prove.

Almucantarat
Linux 1.x
Linux 1.x
Messaggi: 132
Iscritto il: ven 15 apr 2005, 0:00

Messaggio da Almucantarat »

ok, grazie!

Rispondi