ユーザの入力に依存するゲーム用のダイナミック2D配列を作成しようとしています。私は現在、ここに示すメモリを割り当てている関数を持っています:ユーザ入力に基づいてCで2D配列を作成する
void mallocGrid(int argc, char** argv) {
int i;
char* height;
char* width;
int inputHeight = strtol(argv[3], &height, 10);
int inputWidth = strtol(argv[4], &width, 10);
char** gridArray = malloc(sizeof(char*) * inputHeight);
for (i = 0; i < inputHeight; i++){
gridArray[i] = malloc(sizeof(char) * inputWidth);
}
}
私はこのグリッド配列に '。キャラクター。
.
.
.
.
.
.
が、私は得るために期待していた:ユーザーが2の高さと3の幅を入力すると
void gridInit(int argc, char** argv) {
char gridArray[MAX_COLUMN][MAX_ROW];
int i, j;
char* height;
char* width;
int inputHeight = strtol(argv[3], &height, 10);
int inputWidth = strtol(argv[4], &width, 10);
for(i=0; i < inputWidth; i++) {
for(j=0; j < inputHeight; j++) {
gridArray[i][j]= '.';
printf("%c\n", gridArray[i][j]);
}
fputc('\n', stdout);
}
}
しかし、これが現れるものです:ここで私は、現在持っているものです。
..
..
..
これは、ゲームの進行に合わせて上書きできるグリッドを動的に作成する正しい方法ですか?
あなたの出力を使用すると、動的にこの配列を割り当てる方法とは何の関係もありませんし、単にあなたが 'printf'を関数に渡すかに依存します。 'printf'の最初の呼び出しで' \ n'を取り除くことで、目的の出力を得ることができます。 –
'char **'は2D配列でもなく、1つを指し示すことも、そのまま使用することもできません!そして引数のために自明の名前を使用しました。 'argc'と' argv'は役に立たないものです。彼らはミスリーディングです。 – Olaf