检查struct的递归子级是否为NULL(C语言)

检查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

如何检查代码中定义的结构的递归子级是否为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];
  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;?对请参阅我提供的链接。