无法访问我的.h文件中定义的结构中的3d数组

时间:2011-12-17 14:16:43

标签: c multidimensional-array struct

我的main.h中有一个结构但是当我尝试为结构中的3D数组分配内存时,我得到以下编译器错误。

    'text' has no member named 'list'

现在,我只为3D数组得到结构中的其他变量。

main.h

#define MAX_WORD 100

typedef struct textTag {
   char name[100];
   char  ***list;
   int words;
}text;

的main.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "main.h"

void createArray(FILE *file, text *checkTexts, int fileCount,  int size){
   int i, n, wordCount, sections, rest;
   FILE *textFile;
   text localText;
   char fileName[MAX_WORD + 30];

   readFileNames(file, checkTexts);

   for(i = 0; i < fileCount; i++){
      localText = checkTexts[i];

      strcpy(fileName, "./testFolder/");
      strcat(fileName, checkTexts[i].name);
      openFile(&textFile, fileName);

      checkTexts[i].words = countWords(textFile);

      sections = (wordCount / size);
      rest = wordCount % size;
      checkTexts[i].list = malloc(sections * sizeof(char **)); //Compile error here

      for(n = 0; n < sections; n++){
         checkTexts[i].list[n] = malloc(size * sizeof(char *)); //Compile error here
      }

      checkTexts[i].list[sections] = malloc(rest * sizeof(char*)); //Compile error here

      readFileContent(textFile,checkTexts[i].list, size); //Compile error here

   }

}

2 个答案:

答案 0 :(得分:0)

  1. checkTexts可能未初始化 - 您可以使用assert()
  2. 中的assert.h处理此问题
  3. 尝试ddd在执行期间查看指针。这是查看问题的最佳方法之一。
  4. 也许这也有帮助: http://c-faq.com/aryptr/ 特别是6.2,6.3,6.8。

答案 1 :(得分:0)

就像我在评论中说的那样。

解决了问题

这是一个愚蠢的错误,我自己,我意外地打开了错误的main.h文件,所以我正在编辑另一个项目的文件,所以我正在使用的结构确实没有en成员列表。 / p>

但是感谢您试图帮助我。