簡體   English   中英

如何從該結構正確訪問指針?

[英]How can I properly access the pointers from this structure?

因此,我有一個結構列表,並使用*p通過malloc()為它們分配了空間。 現在,我想訪問每個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 也是尚未分配任何內存的指針。 如果沒有適當的分配,則指針指向無效的內存,使用該內存會導致未定義的行為

您可以使用malloc()或family將內存分配給p[j].ptrletter然后才能實際使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM