2013-12-14 53 views
1

尝试从csv文件动态分配数据。我正在试图制作一个数组结构,其中包含2维数组。问题是当我尝试为结构中的数组分配内存时,我得到访问冲突。用评论标记问题区域。任何帮助表示赞赏。在结构中动态分配数组-c

typedef struct current{ 

    char **data; 

}*CurrentData; 

CurrentData getData(FILE *current){ 

CurrentData *AllCurrentData = malloc(NUM_ITEMS * sizeof(CurrentData)); 

    /*allocate struct data memory, skipping the first line of data*/ 
    while ((ch = fgetc(current)) != EOF){ 
     if (firstNewLine == 0){ 
      firstNewLine++; 
     } 
     if (firstNewLine > 0){ 
      if (ch == '\n'){ 
       AllCurrentData[newLineCount]->data = malloc(COLUMNS * sizeof(char)); //problem here// 
       newLineCount++; 
      } 
     } 
    } 
} 
+1

newLineCount在哪里初始化为0? – OldProgrammer

+1

@OrProgrammer没有主要的,所以我认为他只是显示了“重要”的代码。 – Radnyx

回答

0

这下面一行:

CurrentData *AllCurrentData = malloc(NUM_ITEMS * sizeof(CurrentData)); 

应为:

CurrentData AllCurrentData = malloc(NUM_ITEMS * sizeof(*CurrentData)); 

而且替换此:

AllCurrentData[newLineCount]->data 

与此:

AllCurrentData[newLineCount].data 

原因:你有typedefCurrentData是一个指针struct current,你可以直接分配AllCurrentData作为struct current数组。

+0

谢谢问题解决了,指针仍然让我困惑。 – TinMan