在结构的数组元素中复制字符串
copying a string in an array element of a struct
我有以下问题:我制作了这个节点结构
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, '[=11=]', 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;
}
您正在写到 sons 数组的末尾;
应该是 for (i = 0; i < 1024; i++) {
因为数组 0...1023 中只有 1024 个元素。
我有以下问题:我制作了这个节点结构
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, '[=11=]', 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;
}
您正在写到 sons 数组的末尾;
应该是 for (i = 0; i < 1024; i++) {
因为数组 0...1023 中只有 1024 个元素。