带指针的嵌套结构

时间:2015-06-01 16:37:27

标签: c pointers struct nested

我会试着简单地问一下。我有一个嵌套的结构,第一个是文档,第二个是文件夹,应该包含几个文档,这样:

 typedef struct document
 {
    char *docName;
    int  linesAmountInDoc;
    char **docContent;
 }Document;

typedef struct folder
{
    char folderName[20];
    struct document *docs;
}Folder;

Asumming我已经有了几个文件名如:doc1,doc2等。我怎样才能将那些文件名分配到文件夹? 我尝试过这样的事情:

int i;
Folder *fold=(Folder *)malloc(sizeof(struct folder));
for(i=0;i<5;i++) 
    strcpy(fold->docs[i].docName, copyDoc->docName); //access violation

但它不起作用。我收到了邮件访问冲突。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

您需要将内存分配给docs ....和docname - 为什么不将docname定义为char数组而不是结构中的指针?

updated.posts = updated.posts.map(function(post){return post._id});
updated.save(...

但是根据您所做的评论---是否值得检查您是否已声明了5个(或更多)文件

答案 1 :(得分:0)

这是因为docContent即使在null

之后也是Folder *fold=(Folder *)malloc(sizeof(struct folder));

有几种方法可以解决这个问题,最简单的方法是:

Folder *fold = (Folder *)malloc(sizeof(struct folder));
fold->docs = malloc(sizeof(struct document));
fold->docs[0] = copyDoc;

非常脏的修复,没有使用数组。

答案 2 :(得分:0)

我找到了解决方案。通过以下方式使用Function之外的简单赋值:      numOfDocuments + = 1;      copyDoc = CopyDocument(doc,numOfDocuments);      资料夹,&GT;文档[numOfDocuments] .docName = copyDoc-&GT; DOCNAME; 哪个 copyDoc 是函数的返回结果,可以在Pointer的数组中包含任何文档名称(作为嵌套结构)。

无论如何,感谢每一个试图帮助我的人。