2017-08-29 2 views
-1

I folgendes Problem: Ich hat diese KnotenstrukturKopieren eine Zeichenkette in einem Array-Elemente eines struct

typedef struct NODE{ 
    struct NODE *sons[1024];    //this array will be used to store children pointers 
    char name[255]; 
    int leaf;     

}NODE; 

und diese Funktion einen neuen Knoten mit einem gegebenen Namen zu erstellen. Das Problem ist, dass der erste Druck den richtigen Namen zeigt, der zweite nicht. Es scheint, als lösche die for-Schleife den Namen und ich kann mir nicht erklären warum ...

NODE *AllocateNewNode(char *inputname) { 
    NODE *newnode; 
    newnode = (NODE *)malloc(sizeof(NODE)); 



    memset(newnode->name, '\0', sizeof(newnode->name)); 


    strcpy(newnode->name, inputname);  

    printf("node %s created\n", newnode->name); //right name in the output 


    int i = 0; 
    for (i = 0; i <= 1024; i++) { 

     newnode->sons[i] = NULL; 
    } 

    newnode->leaf = 1; 


    printf("node %s created\n", newnode->name);  //no name in the output 

    return newnode; 
} 

Antwort

1

Sie schreiben über das Ende Ihres Sohn-Arrays;

Sollte for (i = 0; i < 1024; i++) { sein, da nur 1024 Elemente im Array 0 ... 1023 vorhanden sind.

+0

wooooops, danke viel – Speck

+0

@Speck wenn dies die Antwort ist, die Sie erwarteten, sollten Sie es akzeptieren. –

Verwandte Themen