Salve a tutti! Ho ripreso in mano il linguaggio C dopo un po' di tempo e ho una domanda!
Ho questo file in input e non posso sapere a priori quante righe avrà
123456 1,1 2,5
654321 1,5 3,6
Devo immagazzinare questi valori all'interno di un albero. Sono partito dalla classica struttura per gli alberi:
typedef struct nodo_albero_bin
{
double valore; /* Valore del nodo - il double è probabilmente sbagliato*/
struct nodo_alber_bin *sx_p, *dx_p; /* Puntatori ai nodi */
} nodo_albero_bin_t;
Poi utilizzando questa funzione, ovviamente sbagliata, ho provato a popolare l'albero:
/* Dichiarazione delle funzioni */
nodo_albero_bin_t acquisisci_dati(nodo_albero_bin_t *radice_p);
/* Qui ci sarebbe la main ma credo sia irrilevante */
/* Definizione della funzione di acquisizione dati da file */
nodo_albero_bin_t acquisisci_dati(nodo_albero_bin_t *radice_p)
{
FILE *file_input; /* File in input */
int controllo_file; /* Variabile di controllo del file */
/* Ciclo do-while che continua fino a che tutti i dati non sono stati acquisiti controllati e inseriti */
do
{
/* Apro il file in lettura */
file_input = fopen(NOME_FILE,
"r");
/* Se si verificano problemi durante l'apertura del file */
if(!file_input)
{
/* Stampo un messaggio di errore */
printf("Si è verificato un errore durante l'apertura del file.\n");
/* Il ciclo ricomincia */
controllo_file = 0;
}
/* Se non ci sono problemi si procede */
else
{
/* Acquisisco la prima stringa */
controllo_file = fscanf(file_input,
"%d",
&radice_p);
}
} while(!controllo_file);
return(*radice_p);
Notare bene che controllo_file funge da variabile di controllo in caso di problema, usata anche per l'apertura del file. Non riscontro problemi ma c'è un warning che non mi piace proprio "
warning: format ‘%d’ expects argument of type ‘int *’, but argument 3 has type ‘nodo_albero_bin_t ** {aka struct nodo_albero_bin **}’ [-Wformat=]
"%d","
Detto questo non sono nemmeno sicuro di poter immagazzinare una stringa da file in un interno nodo. Ha senso? Forse dovrei usare un array per ogni singolo nodo? Quale sarebbe il modo ottimale per memorizzare quel tipo di file in un albero? Qualsiasi aiuto è ben accetto! Grazie mille!