【问题标题】:copying a string in an array element of a struct在结构的数组元素中复制字符串
【发布时间】:2017-08-29 16:26:02
【问题描述】:

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

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

【问题讨论】:

    标签: c string struct strcpy


    【解决方案1】:

    您正在写超出您的 Sons 数组的末尾;

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

    【讨论】:

    • @Speck 如果这是您期望的答案,您应该接受它。
    猜你喜欢
    • 2017-03-17
    • 2018-03-19
    • 2017-06-12
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多