2017-08-29 47 views
-1

我有以下問題的數組元素的字符串:我在此節點結構複製在一個結構

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

}NODE; 

和該函數建立具有給定名稱的新節點。問題是第一個printf顯示正確的名稱,第二個沒有。似乎for循環會擦除名稱,我無法解釋自己爲什麼...

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; 
} 

回答

1

您正在寫超過兒子數組的末尾;因爲數組0 ... 1023中只有1024個元素,所以應該是for (i = 0; i < 1024; i++) {

+0

wooooops,非常感謝 – Speck

+0

@Speck如果這是你期待的答案,你應該接受它。 –