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

How can I properly access the pointers from this structure?

所以我有一个结构列表,我用 malloc() 为它们分配了 space,使用 *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() 部分(几乎是最后一个)出现错误,我试图在 google 上搜索错误,但我没有找到任何有用的东西。必须动态分配。

在您的代码中,

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

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

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