我有以下问题:我做了这个节点结构

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

最佳答案

您正在写完儿子数组的末尾;

应该为for (i = 0; i < 1024; i++) {,因为数组0 ... 1023中只有1024个元素。

关于c - 将字符串复制到结构的数组元素中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45944059/

10-10 17:54