PDA

Visualizza la versione completa : [C++] cancellazione di un file


DarthSandr
06-06-2008, 16:45
Salve a tutti, sto lavorando su un progetto in Visual Studio 2005 e devo cancellare un file.
Ho visto che c'e' il metodo remove che richiede l'import di <stdio.h>

Orbene io ho l'import ma se uso il metodo


remove("\\Programmi\\Terminale Utente\\Ticket.txt");

quando compilo mi da quest'errore: error C3861: 'remove': identifier not found

Perche'?

mondobimbi
06-06-2008, 18:12
ti deve funzionare




#include <stdio.h>

int main ()
{
if( remove( "mio_file" ) != 0 )
perror( "Errore, non stato possibile cancellare il file" );
else
puts( "File cancellato" );
return 0;
}


(non si dice importare ma includere un file .h)
ciao
sergio

810106
06-06-2008, 20:03
prova:


#include <cstdio>
...
std::remove(nomefile);
...

in alternativa


extern "C" int remove(const char *);
...
remove(nomefile);

oppure usa la funzione POSIX `unlink'


#include <unistd.h>
...
unlink(nomefile); /* 0 in caso di successo */

;)

shodan
06-06-2008, 20:19
Oppure usando l'API DeleteFile di windows.

810106
06-06-2008, 22:09
Anche:


#include <stdlib.h>
std::system("command to remove a file");

:)

XWolverineX
07-06-2008, 15:03
Originariamente inviato da 810106
Anche:


#include <stdlib.h>
std::system("command to remove a file");

:)

Si ma bisogna includere cstdlib

mondobimbi
07-06-2008, 15:41
E' meglio evitare le chiamate a system o ad api in quanto generano codice non portabile.
ciao
sergio

DarthSandr
10-06-2008, 17:03
Originariamente inviato da 810106
prova:


#include <cstdio>
...
std::remove(nomefile);
...

in alternativa


extern "C" int remove(const char *);
...
remove(nomefile);

oppure usa la funzione POSIX `unlink'


#include <unistd.h>
...
unlink(nomefile); /* 0 in caso di successo */

;)

Dunque se metto l'extern il linker mi da quest'errore:

1>Serial_threads.obj : error LNK2019: unresolved external symbol remove referenced in function "void __cdecl deleteReservedTicket(void)" (?deleteReservedTicket@@YAXXZ)

mentre se uso la unlink mi da quest'altro:

fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory

e se uso cstdio

fatal error C1083: Cannot open include file: 'cstdio.h': No such file or directory

MItaly
10-06-2008, 17:06
Prova con unlink togliendo #include <unistd.h>.

oregon
10-06-2008, 17:14
Ma l'applicazione di che tipo e'?

Ad esempio, Win32 -> Console ?

Loading