Visualizzazione dei risultati da 1 a 10 su 11

Hybrid View

  1. #1
    Quote Originariamente inviata da M.A.W. 1968 Visualizza il messaggio
    In primo luogo, è opportuno rispettare una sintassi meno emetica nella dichiarazione delle struct, perché quella proposta è davvero inguardabile. Ecco un esempio assai più felice e professionale:

    codice:
    typedef struct {
        float temp;
        char *nome1;
        char *nome2;
    } dato_t;
    ...
    dato_t mieidati[365];

    Oppure, per amor di sintesi (se non sono necessari nel codice altri riferimenti alla struct in oggetto):
    codice:
    struct {
        float temp;
        char *nome1;
        char *nome2;
    } mieidati[365];
    In secondo luogo, l'uso di realloc() è fortissimamente deprecato poiché si tratta della funzione di gran lunga più inefficiente di tutta la standard library, assieme alle degne compagne fscanf() e fprintf().
    Il suo impiego va scoraggiato in qualsiasi fase e a qualsiasi livello di preparazione.

    L'idioma più razionale per la gestione di stringhe di dimensione non prefissata, lette da file dati, consiste nell'usare uno o più buffer statici di dimensione esorbitante rispetto al caso peggiore previsto dalla specifica (o rilevato statisticamente, in mancanza di meglio), usato/i per la lettura del singolo dato da file. Il contenuto di tale buffer sarà poi, di volta in volta, copiato (con una bella strncpy()) nel buffer allocato dinamicamente, al quale punterà il relativo puntatore previsto all'interno della struttura dati. Questo approccio, peraltro, in genere impedisce l'uso dell'orrida e deprecata fscanf() (che comunque non va mai usata! Si legge l'intera riga e si usa sscanf(), semmai), in luogo di funzioni più efficienti e meno error-prone per la lettura di campi da file CDF o simili.

    Causa mancanza di tempo e forzato uso di uno smartphone, non fornisco esempi di codice, anche per stimolare una crescita didattica nell'OP.

    Vi ringrazio per le vostre risposte. Proverò a smanettare, anch'io non sono un programmatore professionista ma mi diletto.
    Intuivo che la realloc non è efficiente e infatti il codice che ho già realizzato utilizza quello stratagemma dei buffer statici spropositati ma alla fine più efficienti. Purtroppo però è un "compito per le vacanze" per l'esame di informatica A, quindi credo che sia fortemente consigliata la gestione dinamica della memoria..
    Provo a implementare la soluzione di torn24 e vedo cosa succede.

    grazie molte

  2. #2
    Quote Originariamente inviata da rosencrruetz Visualizza il messaggio
    Purtroppo però è un "compito per le vacanze" per l'esame di informatica A, quindi credo che sia fortemente consigliata la gestione dinamica della memoria..
    Dipende esclusivamente da cosa ha in mente il/la titolare del corso - e come recita un noto proverbio "Chi domanda non fa errore". Il "ricevimento", anche via email, serve appunto ad appianare simili dubbi.
    • Un plauso a Grisha Perelman, raro esempio di genuino anticonformismo umano e scientifico.

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