簡體   English   中英

分割故障雙指針

[英]segmentation fault double pointer

我在以下代碼上存在分段錯誤,我真的看不到我錯過的內容,此代碼的目的是檢索.csv的行並將其放入使用雙指針創建的2D數組中。

段錯誤位於csv文件第一行的明文[i] [j]的最后一次分配中。

非常感謝您的幫助(從昨天開始就解決這個問題...)

int main(){


int n=48; //nbers of columns in csv file
int m=60; //nbers of lines in csv file


int cpt,i,j;
cpt=0;
i=0;
FILE *fp;
char *token;
const char s[2] = ",";

unsigned char **plaintexts;
plaintexts = malloc(sizeof(*plaintexts) * m);

char *str=malloc(sizeof(char)*15*n); //maximum 15 char per box
fp = fopen("aes_traces.csv","r");




while(fgets(str,15*n,fp)!=NULL){

    plaintexts[i] = malloc(sizeof(*plaintexts[i]) * n);
    token = strtok(str,s);
    j=0;
    while(token != NULL){
        printf("%s\n", token);
        token = strtok(NULL,s);
        plaintexts[i][j]=(unsigned char) (*token);

        j++;

    }

    i++;
    free(str);
    free(token);
}


fclose(fp);

}
while(token != NULL){
    printf("%s\n", token);
    token = strtok(NULL,s); // A
    plaintexts[i][j]=(unsigned char) (*token); // B

    j++;
}

如果此循環至少運行一次,它將以段錯誤結束。 為什么? 直到我在標記為A的行中將token設置為NULL,然后在標記為B的行中取消引用,循環才能終止。 取消引用NULL將導致段錯誤。

暫無
暫無

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

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