Ciao a tutti, il mio problema è questo:
ho una struttura di stringhe così fatta
codice:
struct node{
char *command;
struct node* next;
struct node* prev;
};
struct list{
int count;
struct node* header;
struct node* tailer;
};
se dal main faccio
codice:
fgets(command, 255, stdin);
insert(mylist, command);
viene inserito correttamente, e quando stampo la lista, si vede ciò che ho inserito, se invece racchiudo i due comandi in un ciclo do-while, sembra che tutto funzioni, ma quando stampo la lista non c'è nulla.
codice:
do{
printf("\nComando -> ");
fgets(command, 255, stdin);
if(strcmp(command, "\n")!=0){
strtok(command, "\n");
sprintf(command, "%s > out.%d", command, i); i++;
insert(mylist, command);
printf("inserito!\n");
}
}while(strcmp(command, "\n")!=0);
Non mi spiego il perchè.
Grazie mille a tutti
EDIT: la funzione insert è questa
codice:
void insert(struct list* list, char* new_command){
struct node* new_node;
new_node = malloc(sizeof(struct node));
//int i=1;
//sprintf(new_command, "%s > out.%d",new_command, i);
new_node -> command = new_command;
new_node -> next = NULL;
if(list -> count == 0){ //se la lista è vuota il nuovo nodo è sia header che tailer
new_node -> prev = NULL;
list -> header = list -> tailer = new_node;
}else{ //se la lista contiene già un elemento aggancio il nuovo nodo alla fine della lista
// dopo l'inserimento, il nuovo nodo sarà quindi il tailer della lista.
new_node -> prev = list -> tailer;
list -> tailer -> next = new_node;
list -> tailer = new_node;
}
list -> count ++; // aumento il contatore dei nodi della lista.
}