Eseguo il programma, e appena voglio eseguire la stampa, salta completamente il passaggio, e non stampa la lista delle mosse senza dare alcun errore...
quale potrebbe essere il problema....
struct nodo_Storia
{
char Da_c;
char Da_r;
char A_c;
char A_r;
int cat;
char l;
struct nodo_Storia *next;
};
void inserisci_storia (struct nodo_Storia* head,char da_c,char da_r, char a_c, char a_r, int c, char let){
struct nodo_Storia* s=head;
//alloco il nuovo nodo
struct nodo_Storia* new_head;
new_head = (struct nodo_Storia*)malloc(sizeof(struct nodo_Storia));
strcpy(&new_head->Da_c,&da_c);
strcpy(&new_head->Da_r,&da_r);
strcpy(&new_head->A_c,&a_c);
strcpy(&new_head->A_r,&a_r);
new_head->cat = c;
strcpy(&new_head->l,&let);
//lui diventa il primo nodo e quindi deve puntare all'attuale testa
new_head->next = NULL;
//se la lista e' vuota lui sara' anche il primo quindi la testa deve puntare a lui
if(s==NULL){
s=new_head;
}
while (s->next != NULL)
s = s->next;
s->next = new_head;
}
//stampa la lista
void stampa(struct nodo_Storia* head){
//posso usare head per scorrere la lista perche' e' una copia
//scorro fino alla fine e stampo
while ((head != NULL)){
if(head->cat==0)
printf("%c%c%dx%c%d ", head->l,head->Da_c,head->Da_r,head->A_c,head->A_r);
else printf("%c%c%d-%c%d ", head->l,head->Da_c,head->Da_r,head->A_c,head->A_r);
head = head->next;
}
printf("\n");
}
int main(int argc, char **argv) {
char Command[256]; /* riga di comando */
char da_c, da_r, a_c, a_r;
struct nodo_Storia* Crono=NULL;
printf("\n");
for(;;) {
/* prende l'input da consolle */
printf("sc> ");
if (scanf("%s", Command) == EOF)
return 0;
if (!strcmp(Command, "exit")) {
printf("sc> Ciao!\n");
stampa(Crono);
svuota_lista_casella(&B);
svuota_lista_mosse(&StackMosse);
return 0;
}
/* interpreta l'input come coordinate di una mossa */
if (InputMossa(B,StackMosse,Command) == TRUE) {
da_c = Command[0];
da_r= Command[1];
a_c = Command[2];
a_r =Command[3] ;
inserisci_storia(Crono,da_c,da_r,a_c,a_r,cattura,lettera);
}
else {
/* Comando non valido */
printf(" Comando non valido\n");
}
}
}