我正在嘗試從檔案中讀取資料并且它似乎被正確讀取,但是當我列印值的資料 2 更改為 3 時。我很困惑為什么會發生這種情況。正在讀入的檔案如下所示:
約翰 7 0 1 3 2 0 1 1
杰克 3 4 4 1
簡 5 3 2 3 0 4
珍妮 6 4 2 1 3 0 4
吉姆 2 0 0
喬安娜 4 1 2 4 2
第一個數字只是用來標識后面有多少個數字。對于第一行,第一個列印陳述句將其讀入為 0132011,但是當執行第二個列印陳述句時,它列印出 0132441。這也發生在與 Jenny 的行中。讀入為 421304,但列印出為 421300。
int* philRequests[numPhilosophers];
int numRequests[numPhilosophers];
for(int i = 0; i < numPhilosophers; i ){
fscanf(fp, "%s", buff);
strcpy(names[i], buff);
fscanf(fp, "%d", &numRequests[i]);
philRequests[i] = (int *)malloc(numRequests[i] 1); //allocates memory by the number of requests each phil will make
for(int x = 0; x < numRequests[i]; x ){
fscanf(fp, "%d", &philRequests[i][x]);
printf("\nAdding %d to %d %d", philRequests[i][x], i, x);
}
fgets(buff, 255, (FILE*)fp); //moves on to next line
}
//displaying what was just read in
for(int i = 0; i < numPhilosophers; i ){
for(int x = 0; x < numRequests[i]; x ){
printf("\nReading %d from %d %d", philRequests[i][x], i , x);
}
printf("\n");
}
uj5u.com熱心網友回復:
看起來像覆寫記憶體的問題,因為您沒有在 malloc 呼叫中分配足夠的空間。Malloc 分配您要求的特定位元組數。您要求 (numRequests[i] i) 位元組。但您實際上是在尋找 (numRequests[i] i) 指向 int 的指標。
嘗試類似
philRequests[i] = malloc((numRequests[i] 1)*sizeof(int*));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/361791.html
上一篇:使用qsort-C進行錯誤排序
