Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C] Prendere riga indefinita da file

    Chiedo scusa per la domanda sciocca, per voi che programmate da tempo.
    Ho un dubbio. Una esercitazione di laboratorio per l'esame all'università recita così:

    Un archivio contiene informazioni sugli studenti.
    * cognome (massimo 50 caratteri)
    * nome (massimo 50 caratteri)
    * data di iscrizione (nel formato gg.mm.aaaa)
    * numero di esami superati (valore intero)
    * numero di crediti e voto per ciascuno degli esami superati
    Il numero di studenti del corso e' riportato sulla prima riga del file.
    Il seguente e' un esempio di file corretto:

    3
    Xxx A 01.10.2006 3 9-30 5-24 4-28
    Yyy B 15.10.2006 1 9-22
    Zzz C 01.09.2006 2 9-22 6-24

    Di per sè è un esercizio alquanto facile, se non fosse che non ha dato la lunghezza massima della riga (in quanto uno può aver dato 20 esami e uno 2) e, dato che è un esercizio sull'allocazione dinamica, è insensato sovradimensionare.
    C'è un modo per sapere di quanto dimensionare la stringa leggendo da file?? (o il prof ha dimenticato di scrivere la lunghezza massima?)
    Io conosco le fscanf e fgets, ma entrambe richiedono delle cose che non ho (sapere quante variabili ci sono o la lunghezza della riga).

    GRAZIE!!
    Sembra che tutti abbiano l'idea esatta di come vivere la nostra vita. E non sanno mai come devono vivere la loro.
    ***************************
    Come guida l'onore... Come meta la gloria

  2. #2

    non ho capito bene

    Non ho capito bene il linguaggio che devi usare forse il C?
    Comunque qualsiasi sia il liguaggio, il modo più rapido che io utilizzerrei è questo:

    Creo 3 variabili, una variabile char, un array di char, e un int che userò come contatore.

    1 Creo un puntatore al file.
    2 Posiziono il puntatore all'inizio.
    3 Creo una variabile Char e tramite il punatore del file leggo un carattere alla volta.
    4 Se il carattere letto è un carattere di fine riga ASCII 13 (Return) allora la riga è finita.
    5 Se la riga è terminata allora nel mio array di char saranno contenuti tutti i caratteri che compongono la mia riga.
    6 Se la riga non è terminata inserisco il carattere corrente nell'array di caratteri, incremento il contatore di uno (usato per indicizzare l'array) e sposto il puntatore al file di un carattere avanti in modo da leggere il nuovo carattere.

    Forse funziona chissà... Sarebbe da provare, CiauuuZZZ!!
    impossible is nothing!

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.