所以我有一个结构列表,并使用*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()
我在blog/music
部分(几乎是最后一部分)收到错误,我试图在谷歌上搜索错误,但我还没有发现任何有用的内容。它必须动态分配。
答案 0 :(得分:5)
在您的代码中,
strcpy(p[j].ptrletter,"");
p[j].ptrletter
也是一个尚未分配任何内存的指针。如果没有适当的分配,指针将指向无效的内存,使用该内存会导致undefined behavior。
您可以使用malloc()
或系列将内存分配给p[j].ptrletter
,然后才能真正使用它。