Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331

    [C++] cancellazione di un file

    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

    codice:
    remove("\\Programmi\\Terminale Utente\\Ticket.txt");
    quando compilo mi da quest'errore: error C3861: 'remove': identifier not found

    Perche'?

  2. #2
    ti deve funzionare

    codice:
    #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

  3. #3
    Utente di HTML.it L'avatar di 810106
    Registrato dal
    Jun 2008
    Messaggi
    67
    prova:
    codice:
    #include <cstdio>
    ...
    std::remove(nomefile);
    ...
    in alternativa
    codice:
    extern "C" int remove(const char *);
    ...
    remove(nomefile);
    oppure usa la funzione POSIX `unlink'
    codice:
    #include <unistd.h>
    ...
    unlink(nomefile); /* 0 in caso di successo */

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Oppure usando l'API DeleteFile di windows.

  5. #5
    Utente di HTML.it L'avatar di 810106
    Registrato dal
    Jun 2008
    Messaggi
    67

    :)

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

  6. #6
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563

    Re: :)

    Originariamente inviato da 810106
    Anche:
    codice:
    #include <stdlib.h>
    std::system("command to remove a file");
    Si ma bisogna includere cstdlib
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  7. #7
    E' meglio evitare le chiamate a system o ad api in quanto generano codice non portabile.
    ciao
    sergio

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331
    Originariamente inviato da 810106
    prova:
    codice:
    #include <cstdio>
    ...
    std::remove(nomefile);
    ...
    in alternativa
    codice:
    extern "C" int remove(const char *);
    ...
    remove(nomefile);
    oppure usa la funzione POSIX `unlink'
    codice:
    #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

  9. #9
    Prova con unlink togliendo #include <unistd.h>.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma l'applicazione di che tipo e'?

    Ad esempio, Win32 -> Console ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.