所以我有一个结构列表,我用malloc()
为它们分配了空间,使用*p
。现在我想访问每个ptrletter
元素并使用它。我应该怎么做?这是我的代码。
typedef struct Words {
char *ptrletter;
int numbers;
} Word;
int main(){
FILE *f, *g;
char c,d;
int *a;
int nrofline=0;
int elements=0;
char string[2];
int lines=0;
f=fopen("m_in.txt","r");
do{
d=fgetc(f);
if (d=='n'){
lines++;
}
}while (d!=EOF);
a=(int*)malloc(sizeof(int)*lines);
rewind(f);
lines=0;
do{
d=fgetc(f);
if ((d>='A' && d<='Z') || (d>='a' && d<='z')){
elements++;
}
if (d=='n'){
a[lines]=elements;
lines++;
elements=0;
}
}while (d!=EOF);
Word *p=(Word*)malloc(sizeof(Word)*lines);
int j=0;
for (j=0; j<lines; j++){
strcpy(p[j].ptrletter,"");
p[j].numbers=0;
}
rewind(f);
}
我在strcpy()
部分(几乎是最后一个(出现错误,我试图在谷歌上搜索错误,但我没有找到任何有用的东西。它必须是动态分配的。
在你的代码中,
strcpy(p[j].ptrletter,"");
p[j].ptrletter
也是一个尚未分配任何内存的指针。如果没有适当的分配,指针将指向无效内存,使用该内存会导致未定义的行为。
您可以使用malloc()
或系列将内存分配给p[j].ptrletter
,然后才能实际使用它。