Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703

    [c++] remove , problemi di return

    ciao a tutti, allora ho qualche problema che non mi spiego utilizzando la funzione "remove"
    mi spiego:

    se faccio così..

    codice:
    if(remove("prova.txt")!=0) cout << "impossibile modificare il file...";
                fstream oggettodelflusso("prova.txt",ios::out);
                oggettodelflusso << miastringa;
                oggettodelflusso.close();
    mi da problemi restituendomi "impossibile modificare file..ecc.."
    ma tuttavia il file viene cancellato!!.
    Il percorso che segue quel codice è:
    1) cancello il file prova.txt
    2) ricreo il file e ci butto dentro una mia stringa.

    In caso analogo, se non ricreo il file..
    codice:
    if(remove("prova.txt")!=0) cout << "impossibile modificare il file ecc..";
        else cout << "file correttamente eliminato";
    funziona tutto come dovrebbe..ora dove sta il problema?!? :master: forse è il fatto di ricreare il file con lo stesso nome?? grazie..

  2. #2
    in caso di errore, la remove setta errno. Al posto della COUT prova ad usare la perror come nell'esempio del tuo link. Così stamperà, olte al tuo messaggio, anche l'errore.

    Fammi sapere, ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    mi restituisce:
    codice:
    Error deleting file:Permission Denied
    che cavolo di errore è?! sono amministratore su questo pc..

  4. #4
    Originariamente inviato da cleaner
    mi restituisce:
    codice:
    Error deleting file:Permission Denied
    che cavolo di errore è?! sono amministratore su questo pc..
    ok, ora servono altre informazioni. Sei su un sistema windows o unix like?

    Se fossi ad esempio su Ubuntu, io proverei a invocare l'eseguibile con davanti SUDO ma è SOLO una supposizione

    EDIT: forse ho capito. Sei sciuro che quel file non lo hai aperto in precedenza, per scriverlo, senza chiuderlo?

    In sostanza, prima di cancellarlo, devi chiuderlo!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    sono sotto windows, ma in ogni caso a me serve che sia multipiattaforma, quindi di fatto dovrà funzionare anche su linux.
    P.s sui file di testo di solito non sono settati particolari permessi..mmm

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    mm, nn vi viene in mente niente? :master: non so propio perchè si comporta così..

  7. #7
    Originariamente inviato da cleaner
    mm, nn vi viene in mente niente? :master: non so propio perchè si comporta così..
    ti ripeto. Ho cercato in giro e quell'errore è dovuto al fatto che "apri" il file in questione da qualche parte e non lo richiudi. Se te quel file non lo usi da nessuna parte prima della chiamata 'remove' allora non so proprio cosa passa essere. :rollo:

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    ok risolto O_o ci ho impiegato un ora a far passare tutta la classe..grazie.

  9. #9
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Ma non si usa unlink per eliminare un file?
    "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

  10. #10
    Controllando la documentazione di Visual C++ unlink ha un underscore davanti, quindi dovrebbe essere non standard, mentre remove non ce l'ha, quindi dovrebbe essere standard. Credo che unlink sia la classica funzione UNIX diventata standard non di nome ma di fatto.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.