我在使用结构数组时遇到问题。我需要逐行读取文本文件,并并排比较这些值。例如“妈妈”会返回 2 ma , 1 am 因为你有妈妈。我有一个结构:
typedef struct{
char first, second;
int count;
} pair;
我需要为整个字符串创建一个结构数组,然后比较这些结构。我们还介绍了内存分配,因此我们必须为任何大小的文件执行此操作。这就是我真正遇到麻烦的地方。如何为结构数组正确重新分配内存?这是我现在的主要内容(不编译,有错误显然有问题)。
int main(int argc, char *argv[]){
//allocate memory for struct
pair *p = (pair*) malloc(sizeof(pair));
//if memory allocated
if(p != NULL){
//Attempt to open io files
for(int i = 1; i<= argc; i++){
FILE * fileIn = fopen(argv[i],"r");
if(fileIn != NULL){
//Read in file to string
char lineString[137];
while(fgets(lineString,137,fileIn) != NULL){
//Need to reallocate here, sizeof returning error on following line
//having trouble seeing how much memory I need
pair *realloc(pair *p, sizeof(pair)+strlen(linestring));
int structPos = 0;
for(i = 0; i<strlen(lineString)-1; i++){
for(int j = 1; j<strlen(lineSTring);j++){
p[structPos]->first = lineString[i];
p[structPos]->last = lineString[j];
structPos++;
}
}
}
}
}
}
else{
printf("pair pointer length is null\n");
}
}
如果有更好的方法,我很乐意改变事情。我必须使用上述结构,必须有一个结构数组,并且必须使用内存分配。这些是唯一的限制。