Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    281

    Riavvolgere e svuotare un file in C++

    Qualcuno mi sa dire quali sono le funzioni e come si usano?
    Io per posizionarmi all'inizio del file ho provato a fare così:
    file.seekg(0) e file.seekg(0, ios::beg)
    ma in entrambi i casi non funziona, visto ke nn riesco + a leggere nessun record
    Per svuotare un file mi hanno detto di usare il metodo clear() ma non funziona

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167

    Re: Riavvolgere e svuotare un file in C++

    Originariamente inviato da Dave83
    Qualcuno mi sa dire quali sono le funzioni e come si usano?
    Io per posizionarmi all'inizio del file ho provato a fare così:
    file.seekg(0) e file.seekg(0, ios::beg)
    ma in entrambi i casi non funziona, visto ke nn riesco + a leggere nessun record
    Per svuotare un file mi hanno detto di usare il metodo clear() ma non funziona
    Hai aperto il file in modo da consentire operazioni di lettura e scrittura ?

    ciao.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    281

    Ho fatto così:
    fstream file("file.dat", ios:ut|ios::in|ios::binary);

    Cmq premetto ke questa funzione non mi è mai funzionata (solo nel caso di posizionarmi all inizio del file, negli altri casi sì), dunque o sbaglio io qualcosa nell'usare i file (ma nn capisco dove) oppure c'è qualcosa ke nn va

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    281
    C'è qualcosa ke nn va: ho fatto un programma x testare il funzionamento della seekg (per posizionarmi all inizio del file) e funziona...xò nel programma in cui mi serve no e non vedo il motivo: come record ho una struttura con 4 stringhe, un char e un int:
    come prima cosa apro il file, poi entro in un do-while dove devo scegliere tra 4 opzioni: scelta una delle 4 opzioni disponibile entro in una switch; ogni case esegue le relative operazioni di lettura/scrittura e posizionamento all'interno dello stream, e alla fine della switch (prima di kiudere il do-while) riavvolgo il file con la seekg, xò a quanto pare non funziona, xkè una volta ke scelgo di nuovo una delle 4 opzioni non riesco + a leggere niente dal file (penso xkè il puntatore è ancora alla fine dello stream).
    dunque nn so. Ho provato anke a mettere la seekg x riavvolgere il file prima della switch ma non cambia niente.

    -----------------------------------------------------------------

    Ho fatto un altra prova e ho notato una cosa.
    l'istruzione file.seekg(0) non funziona se la uso dopo un ciclo while dove leggo fino alla fine del file (while (!file.eof()) {}), anke nel programma di prova.

    Questo da cosa dipende?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    281
    Help nessuno sa spiegarmi come risolvere e se esiste un modo x svuotare uno stream?

  6. #6

    soluzione

    ciao, in c++ prova a fare cosi:

    per aprire il file:
    FILE* F=fopen("nome file","rb+")

    per posizionarti usa:

    fseek(F,0,x)
    x può assumere valore: 0=inizio 1=dove si trova il puntatore
    2=fine file

    per leggere e scrivere dal file usa:
    fread(&x,sizeof(x),1,F);
    fwrite(&x,sizeof(x),1,F);

    se vuoi cancellare una stringa basta fare stringa[0]=0

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    281
    Questo lo so fare anke io, il problema è ke questo è C, a me serve fare quelle operazioni con le funzioni del C++.
    Cmq thx lo stesso

  8. #8

    guarda

    guarda che il c e il c++ non si differenziano molto. ci sono soolo delle piccole differenze, ma queste funzioni le puoi usare anche in c++. Io ho sempre programmato in c++ ed le ho sempre usate...

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    281
    sì lo so ma cmq nn servono a fare quello ke ho kiesto (a me serve scrivere senza sovrascrivere i dati)
    in c++ di solito s usa gli oggetti fstream,ifstream ecc, anke se può fare con le funzioni del C

    cmq ho kiesto anke in altri forum e a quanto pare nn c'è altro modo se nn quello d copiare il file in memoria ed accodarlo ai dati ke voglio scrivere

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.