我有一个程序,到目前为止取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;
}