Ciao a tutti!!
Il mio problema, stavolta, è nel main. Dovrebbe visualizzare un menu che va a svolgere varie operazioni su un albero. Tutte le operazioni sembrano funzionare discretamente, a parte quella di inserimento; il problema sembra essere proprio nell'uso delle funzioni scanf e fgets (o gets indifferentemente).
codice:
while (1)
{
fputs("1. Inserisci elementi in sequenza: \n", OUTPUT);
fputs("2. Print tree: \n", OUTPUT);
//[...]
fputs("0. Exit: \n", OUTPUT);
scanf("%d", &choice);
switch(choice)
{
while ( gets(word))
{
// fprintf(OUTPUT, "\nElemento: ");
printf("string = %s\n", word); //Ho inserito due printf per controllare cosa stampava
value = atoi(word);
printf("value = %d\n", value);
tree = add(value, tree);
}
break;
}
In pratica, dalle printf di controllo, sembra venir fuori che quando scelgo l'opzione 1 e premo invio, il carattere INVIO viene memorizzato già nella stringa word; per questo, viene inserito il valore 0 nel nodo. Come mai? la gets non gestisce anche il carattere newline? Come si può ovviare al problema?
Grazie mille a tutti per l'aiuto