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