Buonasera,
in primis ciao a tutti, questo è il mio primo messaggio nel forum. Sono uno studente al primo anno di università e richiedo disperatamente il vostro aiuto perchè è più di un'ora che cerco di capire cosa c'è di sbagliato nel mio codice .
Sto facendo un esercizio in cui sostanzialmente viene richiesta la possibilità di aggiungere elementi ad una lista attraverso un menù iniziale. Il fatto è che ho creato un'apposita funzione aggiungi_elementi che sembra andare per i primi 3..4..o 7 elementi dopo di che mi dà errore di allocazione, in modo casuale. Non capisco perchè ad un'esecuzione mi aggiunge 5 elementi e a quella successiva mi restituisce errore dopo soli 2 elementi.
Lascio qui sotto il codice nel caso qualcuno avesse voglia di dargli un occhio . Grazie!
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct giocatore{
char* username;
int punteggio;
struct giocatore* next;
};
typedef struct giocatore nodo;
typedef struct giocatore* lista;
void aggiungi_giocatore(lista head){
lista elem;
elem=(lista)malloc(sizeof(nodo));
if(elem==NULL){
printf("\nErrore di allocazione");
}else{
printf("\nInserire username: ");
scanf("%s", elem->username);
elem->punteggio=0;
elem->next=NULL;
if(head==NULL){
head=elem;
}else{
nodo* aux=head;
while(aux->next!=NULL){
aux=aux->next;
}
aux->next=elem;
}
}
}
int main(){
int a;
lista head;
head=NULL;
do{
scanf("%d", &a);
switch(a){
case 1:
aggiungi_giocatore(head);
break;
}
}while(a!=0);
return 0;
}