[英]Why are these integer values in my array changing?
我正在嘗試從文件中讀取數據,並且似乎已正確讀取,但是當我打印數據時,值 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");
}
看起來像覆蓋 memory 的問題,因為您沒有在 malloc 調用中分配足夠的空間。 Malloc 分配您要求的特定字節數。 您要求 (numRequests[i]+i) 個字節。 但是您實際上是在尋找指向 int 的 (numRequests[i]+i) 指針。
嘗試類似的東西
philRequests[i] = malloc((numRequests[i] + 1)*sizeof(int*));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.