检查struct的递归子级是否为NULL(C语言)
如何检查代码中定义的结构的递归子级是否为NULL或空,是否未使用?我想知道它们是否为空,以便用数据填充它们检查struct的递归子级是否为NULL(C语言),c,recursion,struct,C,Recursion,Struct,如何检查代码中定义的结构的递归子级是否为NULL或空,是否未使用?我想知道它们是否为空,以便用数据填充它们 #include <stdio.h> #include <stdlib.h> #define HEIGHT 256 #define LENGTH 256 typedef struct FS FS; typedef struct Elem Elem; struct Elem { char name[256]; char content[256]; E
#include <stdio.h>
#include <stdlib.h>
#define HEIGHT 256
#define LENGTH 256
typedef struct FS FS;
typedef struct Elem Elem;
struct Elem {
char name[256];
char content[256];
Elem *child[1024];
};
struct FS {
Elem *child[1024];
};
void create(FS *fs, char path[HEIGHT][LENGTH]){
while(i<1024){
if(fs->child[i] == NULL){ //check if child[i] is NULL, if so I can fill it with data
Elem *e;
e = malloc(sizeof (Elem));
fs->child[i] = e;
strcpy(e->name, path[0]);
i = 1024;
}
i++;
}
}
int main(void) {
FS *fs;
char path[HEIGHT][LENGTH];
create(fs, path);
return 0;
}
在这一行fs->child[i]==NULL,这一行fs->child[i]=e,它在运行时返回Segmentation fault:11。我做错了什么?FS*FS;应改为FS*FS=FS*malloc sizeofFS;。很可能您知道如何分配内存块,但似乎忘记了它。然而,别忘了让它自由 您没有为fs分配有效的指针值。所以fs->。。。是非法的地址引用。您在哪里创建fs?首先,您需要使用malloc将有效指针分配到fs的某个位置,然后使用memset将整个内容初始化为零。@lower所以您建议这样做,而不是fs*fs=malloc sizeofFS;?对请参阅我提供的链接。