• User

    leggere un file con tracciato record

    Ciao!
    Vi scrivo dopo parecchio tempo, anche se vi ho seguito ;), ma oggi proprio non mi viene la soluzione giusta.
    Vorrei chiedervi come leggere un file txt che contiene dei dati e di cui conosco il tracciato record.
    Non ho dei limitatori tra i campi, ma ne conosco la lunghezza
    Intendo tipo

    nome 8 cognome 7 età 2

    .txt
    patriziarossoni29
    patrizioressoni25

    Avrei voluto usare fscanf, ma non è giusto... o c'è un modo?

    grazie
    Pat


  • User Attivo

    Cosa intendi per "tracciato record"?

    ad ogni modo fscanf è una funzione di C++, qui si parla di PHP ed in genere puoi leggere i file per riga se conosci la struttura (sai che gli spazi sono separatori, per capirci) come se fosse un file CSV, attraverso fgetcsv (l'estensione può esserre anche txt):

    <?php
    $row = 1;
    $handle = fopen("test.csv","r");
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
    echo "<p> $num campi sulla linea $row: <br /></p>\n";
    $row++;
    for ($c=0; $c < $num; $c++) {
    echo $data . "<br>\n";
    }
    }
    fclose($handle);
    ?>

    In alternativa, leggi una riga alla volta e la suddividi via regex, via split-string e con decine di altri metodi a scelta 🙂


  • User

    Ciao Salvatore,
    beh in effetti ho letto il file una riga alla volta e ciascuna riga l'ho suddivisa come suggerisci tu.
    Mi sembrava una soluzione così complicata e speravo in qualcosa di più semplice visto la lunghezza della riga.
    Avevo qualche vago ricordo in cobol! Figurati!

    Comunque per "tracciato record" intendevo che conoscevo la lunghezza e il tipo di ciascun campo del record.
    La funzione fscanf la puoi trovare anche in php:
    (PHP 4 >= 4.0.1, PHP 5)
    fscanf — Analizza l'input da un file secondo un determinato formato.

    Grazie per la tua risposta.
    Pat


  • User Attivo

    Di nulla, grazie a te 🙂