分配char指针数组

我有一些文件,我正在将内容读入char数组,我想将我从每个文件中读取的内容存储在一个字符数组中,以便我可以访问单独的字符数组(文件内容) index,我不确定如何执行此操作的语法。

我的理解是我需要将模式数组中的每个内存地址设置为每个char数组一个内存地址; 到存储在patternData中的char数组,但我不知道如何设置它。 我错过的语法是什么,我需要让它发生?

我试过的

我原以为如果我存储了一种char*那么我需要一个char**来存储char数组的单独数组。

我将使用以下表示法来访问char* ,以将模式索引的内存地址设置为

 &patterns[INDEX] = &pData; 

但是这不起作用。 有很多“char指针数组”问题,但我不确定将pData简单地分配给模式索引的正确方法。

 char *tData; int tLength; char *pData; int pLength; char **patterns; void ReadFromFile(FILE *f, char **data, int *length) //This is what is passed into function int main(int argc, char **argv) { for (int i = 1; i <= 5; i++) { FILE *f; char fileName[1000]; sprintf(fileName, "file%d.txt", i); f = fopen(fileName, "r"); if (f == NULL) return 0; ReadFromFile(f, &pData, &pLength); //works to here, contents of file assigned to pData fclose(f); &patterns[i - 1] = &pData; } return 0; } 

这行不正确:

 &patterns[i - 1] = &pData; 

您正在尝试分配“取一个地址”运算符的结果,这是不可能的,因为它不是左值。

任务应如下:

 patterns[i - 1] = pData; 

但是在执行此操作之前需要分配patterns 。 您可以使用

 patterns = malloc(sizeof(char*)*5); 

或者简单地将patterns声明为五个数组:

 char *patterns[5]; 

这假设您的ReadFromFile函数分配一个char* ,并将其分配给pData指向的地址。 请注意,您需要free通过malloc / calloc / realloc获取的所有指针。

我没有特别仔细地阅读过,但令我感到奇怪的是,当它是**时,你正在参考模式。 这是在行:

 &patterns[i-1] = &pData;