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

Lil*_*agy 1 c malloc pointers dynamic-memory-allocation

所以,我有结构的列表和我分配的空间给他们用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);
}
Run Code Online (Sandbox Code Playgroud)

我在strcpy()部分(几乎是最后一个)得到错误,我试图在谷歌上搜索错误,但我没有发现任何有用的东西.它必须动态分配.

Sou*_*osh 5

在你的代码中,

strcpy(p[j].ptrletter,"");
Run Code Online (Sandbox Code Playgroud)

p[j].ptrletter是还尚未分配的任何内存的指针.没有适当的分配,指针指向无效的内存,使用它会导致未定义的行为.

您可以使用malloc()或系列来分配内存,p[j].ptrletter然后才能实际使用它.