Visualizzazione dei risultati da 1 a 4 su 4

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185

    [C]Problema inserimento stringhe in lista

    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.
    
    }
    Ultima modifica di dennis87; 01-08-2014 a 01:24

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.