Buonasera ragazzi,
ho implementato la seguente funzione per verificare l'univocità di un nickname inserito all'interno di una lista. Non capisco perché non mi fa reinserire il nickname (quando esiste già uno uguale).
La seguente funzione:
1. NON FUNZIONA : appena inserisco il PRIMO generico utente anche con stesso username
2. FUNZIONA : al SECONDO utente che inserisco (quindi mi dice se ho un utente con stesso nome : flag = TRUE)
fgets(nuovo_Nodo -> nick, Char_size, stdin);
nuovo_Nodo -> nick[strlen(nuovo_Nodo -> nick) - 1] = 0;
if (strlen(nuovo_Nodo -> nick) == 0) {
puts("\t \t \t \n Nickname non valido.");
} else {
// COPIO IN TEMP LA TESTA DELLA LISTA
temp_Utente = *testa;
while(temp_Utente!= NULL && flag == false){
if (strcmp(temp_Utente -> nick, nuovo_Nodo -> nick) == 0) {
flag = true;
break;
}
temp_Utente = temp_Utente -> next_Utente;
}
}
Non capisco dove sia il problema. Alla PRIMA registrazione di un utente è come se non riuscisse a confrontare alla SECONDA si.
La cosa strana è la seguente, se inserisco come NICK = “EE” al primo avvio del programma, nonostante sia in lista (e se stampo la lista si vede), non mi dice di trovarlo, invece al secondo avvio me lo trova. E' come se la strcmp non funziona al primo avvio, non trova uguaglianza (anche se è presente, e lo so perchè si vede nella lista quando la stampo).
Questo pezzo di codice è presente all'interno di una funzione che ho chiamato registrazione.