动态数组包含第一行前3列中的垃圾

时间:2016-02-22 23:31:14

标签: c multidimensional-array dynamic-memory-allocation

我有一个程序,到目前为止取4个值,第1个是这样的情况,第2个基本上是多少列,第3个值现在无关紧要,最后一个值指定行。

出于某种原因,当我输入4 6 4时,程序将输出0的网格。 当我做7 6 4时,第一行中的前3列包含大量无意义数字。 当我做4 6 7时,它会彻底崩溃。 当我做8 6 4时,问题在第一行前4列。 我不知道问题是什么,但我认为它在我的第二次calloc调用中。

#include <stdio.h>
#include <stdlib.h>


int** makeArray();
int permute();


int main()
{   int cases, slotsToFill, possibleColors,movesMade;
    int i;
    int j;
    int** moves;

    scanf("%d", &cases);
    for( i = 0; i < cases; i++){
        scanf("%d %d %d", &slotsToFill,&possibleColors,&movesMade);
        moves = makeArray(movesMade,slotsToFill);
    }
    /*for(i = 0; i < movesMade; i++){
        for(j = 0; j<slotsToFill; j++){
            printf(" %d", moves[i][j]);
        }
        printf("\n");
    }*/
 system("pause");
    return 0;

}

int** makeArray(int rows, int cols){
    int** moves;
    int i;
    int j;
    cols = cols + 2;
    moves = calloc(rows,sizeof(int*));
    if(moves != NULL){
        for(i = 0; i < cols; i++){
            moves[i] = calloc(cols, sizeof(int));
            if(moves[i]== NULL){
                printf("ALLOCATION FAILED\n");
                break;
            }

        }
    for(i = 0; i < rows; i++){
        for(j = 0; j<cols; j++){
            printf(" %d", moves[i][j]);
        }
        printf("\n");
    }

    }


    return moves;
}

0 个答案:

没有答案