Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012

    [C++] Determinare la lunghezza di un file

    Come da titolo, come si determina la lunghezza di un file?

    Possibilmente rispondete presto...

  2. #2
    Provato con sizeof(nomefile); ?
    ------------------
    Non dire gatto! se non l'hai nel sacco!!!
    ------------------

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,305
    Io ho usato un metodo un po' artigianale ma che funziona: scorro tutto il file byte per byte incrementando una variabile contatore fino alla fine del file. Quando esco dal ciclo decremento la variabile di 1 (tolgo il carattere di EOF che di solito non viene calcolato per la dimensione del file) e ottengo la dimensione. Ti posto il codice:
    codice:
    int countFirst = 0;
    
    while (!feof(primo)) {
       fgetc(primo);
       countFirst++;
    }
    
    countFirst--;  // ora in countFirst ho la dimensione del file
    
    rewind(primo);  // riporto il puntatore all'inizio del file
    Sicuramente ci saranno delle funzioni di libreria o delle API apposite, ma non conoscendole, me le implemento artigianalmente! :gren:

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Questo metodo lo conoscevo già, ma visto che devo lavorare con file grandi (70 Mb circa), è troppo lento...

  5. #5
    qquale metodo sizeof?
    ------------------
    Non dire gatto! se non l'hai nel sacco!!!
    ------------------

  6. #6
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    No, quello di LeleFT... è lungo...

    sizeof opera durante la compilazione e quindi nn funzionerè mai!!

  7. #7
    Al posto di leggere un byte alla volta leggine 100 o di piu'...
    Poi Sommi il ritorno di fread che e' il numero di byte letti...

    while (!feof(fp)) {
    letti = fread(&buffer, sizeof(char), 100, fp);
    somma += letti;
    }

  8. #8
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Vale lo stesso di prima...

    Esisterà una funzione/API che fa quello che voglio io!

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,305
    Non vorrei dire una cavolata... ma se non ricordo male esiste una certa struttura chiamata stat che dà informazioni riguardo un file aperto... (tipo, nome e forse anche dimensione).

    Credo che sia necessario includere la libreria stat.h per poter usare la relativa funzione (stat).

    Sicuramente esiste questa libreria per Linux, non so se esiste anche per Windows...

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #10
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Non la trovo

    Io in VB userei FileLenght() o LOF(), ma in C++ non saprei...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.