C语言 如何从此结构正确访问指针



所以我有一个结构列表,我用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,然后才能实际使用它。

相关内容

  • 没有找到相关文章

最新更新