如何正确访问此结构中的指针?

时间:2016-01-12 20:39:34

标签: c pointers malloc dynamic-memory-allocation

所以我有一个结构列表,并使用*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部分(几乎是最后一部分)收到错误,我试图在谷歌上搜索错误,但我还没有发现任何有用的内容。它必须动态分配。

1 个答案:

答案 0 :(得分:5)

在您的代码中,

strcpy(p[j].ptrletter,"");

p[j].ptrletter 也是一个尚未分配任何内存的指针。如果没有适当的分配,指针将指向无效的内存,使用该内存会导致undefined behavior

您可以使用malloc()或系列将内存分配给p[j].ptrletter,然后才能真正使用它。