2016-05-29 105 views
-4

我試圖從一個文件異常在project.exe在0x5409B211(ucrtbased.dll)拋出:0000005:訪問衝突寫入位置0x007110E8

填充結構包括hashtag數組的hash_name的結構包括hashtag是

typedef struct{ 
    char hash_name[300]; 
    long hash_freq; 
    ID_liste users; 
}hashtag; 

我的載體作用是

void load_hashtag(long ID,int* taille,hashtag *local) 
{ 
    int i=-1; 
    char filename[100]; 
    sprintf(filename, "data\\fn\\%d.featnames", ID); 
    long a; 
    FILE * g=fopen(filename,"r"); 
    do{ 
     if (i >= 0) 
     { 
      local = (hashtag*)realloc(local, sizeof(hashtag)); 
      printf("realloc %d\n", i); 
     } 
     i++; 
     fscanf(g,"%ld",&a); //a numbre i don't want 
     fseek(g, 2, SEEK_CUR); //tow characters i don' want 
     fscanf(g, "%s", local[i].hash_name); 
    }while(!feof(g)); 
    fclose(g); 
    *taille = i; 
} 

主要是

int main() 
{ 
    int i,j; 
    hashtag* local = (hashtag*)malloc(sizeof(hashtag)); 
    int local_taille; 
    long ID_user; 
    FILE* user; 
    user = fopen("User.txt", "r"); 
    if (user == NULL) 
    { 
     printf("Error opening file\n"); 
     return 0; 
    } 
    fscanf(user, "%ld", &ID_user); 
    load_hashtag(ID_user,&local_taille,local); 
    fclose(user); 
    system("Pause"); 
    return 0; 
} 

之後,從1300 50的fscanf程序停止和異常拋出窗口出現

請幫助

+6

使用調試器。 – kaylum

+0

OT:這個'... fn \\%d.featnames「,ID);'應該是'... fn \\%ld.featnames」,ID);''作爲'ID'是'long'。 – alk

回答

2

這條線是你的問題:

local = (hashtag*)realloc(local, sizeof(hashtag)); 

你重新分配local大小相同它之前。你應該realloc到一個較大的大小,不一樣的大小。

+0

@MohamadMohyeddine - 如果此答案有助於解決您的問題,請使用投票箭頭下的複選標記考慮[標記爲已接受](https://stackoverflow.com/help/someone-answers)。謝謝! –

相關問題