我有一些文件,我正在将内容读入char数组,我想将每个文件中读取的内容存储在一个字符数组中,以便我可以访问单独的字符数组(文件内容)通过索引,我不知道如何做到这一点的语法。
我的理解是我需要将模式数组中的每个内存地址设置为每个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;
}
答案 0 :(得分:2)
此行不正确:
&patterns[i - 1] = &pData;
您正在尝试分配&#34;取一个地址&#34;运算符,这是不可能的,因为它不是左值。
作业应如下:
patterns[i - 1] = pData;
但在执行此操作之前,您需要分配patterns
。你可以使用
patterns = malloc(sizeof(char*)*5);
或简单地将patterns
声明为五个数组:
char *patterns[5];
这假定您的ReadFromFile
函数分配char*
,并将其分配给pData
指向的地址。请注意,您需要free
通过malloc
/ calloc
/ realloc
获得的所有指针。
答案 1 :(得分:0)
我没有特别仔细地阅读过,但是当我感到非常奇怪的是,当它是**时,它会引用模式。这是在行:
&patterns[i-1] = &pData;