Ciao a tutti, il mio problema è questo:
ho una struttura di stringhe così fatta
se dal main facciocodice:struct node{ char *command; struct node* next; struct node* prev; }; struct list{ int count; struct node* header; struct node* tailer; };
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:fgets(command, 255, stdin); insert(mylist, command);
Non mi spiego il perchè.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);
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. }

Rispondi quotando
