簡體   English   中英

為什么我的數組中的這些 integer 值會發生變化?

[英]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.

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