char ** 2D配列をchar ***からサイズ変更する方法がわかりません。 char ** 2D配列は、以下のようにこのサイズ変更関数を渡されます。ここ3D char配列を使用してダブルポインタ2D char配列のサイズを変更するにはどうすればよいですか?
を関数と言われている。
resize_canvas(&C, 5, 6, 5, 10, 'e');
これは、以下のコードを通過します。それは私がそれが欲しかったサイズではなく、char ***を印刷しています。上記の関数から任意のサイズにリサイズできる必要があります:
void resize_canvas(char*** Cp, int old_width, int old_height, int new_width, int new_height, char wc){
int height = new_height;
int width = new_width;
int depth = 1;
Cp = new char**[height];
for(int i = 0; i < height; i++){
Cp[i] = new char*[width];
for(int j = 0; j < width; j++){
Cp[i][j] = new char[depth];
for(int z = 0; z < depth; ++z){
Cp[i][j][z] = wc;
cout << Cp[i][j][z];
}
}
cout << endl;
}
}
私が探しているものは私に与えられていません。前回のchar **配列は、このプリントアウト:これらの文字を割り当てられ、満たされた私の以前の機能
// C:
// ddddddeeee
// ddddddeeee
// ddddddeeee
// ddddddeeee
// ddddddeeee
た:私はそれは後で、このことができますサイズを変更できるようにする必要があります
// C:
// ddddddd
// ddddddd
// ddddddd
// ddddddd
// ddddddd
// ddddddd
を** 2D配列:
char** allocate_canvas(int width, int height){
char **array;
char temp = 'A';
array = (char **)malloc(height* sizeof(char *));
for (int i = 0; i < height; i++){
array[i] = (char*)malloc(width* sizeof(char));
}
return array;
}
void wash_canvas(char** C, int width, int height, char wc){
for(int i = 0; i < height; i++){
for(int j = 0; j < width; j++){
C [j][i] = wc;
}
}
}
void deallocate_canvas(char** C, int width){
for(int i = 0; i < width; i++){
free(C[i]);
C[i] = NULL;
}
free(C);
}
新しい配列では、すべてのold_width * old_height要素を古い 'wc'すなわち' d'で埋めたいですか? – sameerkn
@ sameerkn、そう、それは私が信じる目標です。 'wc'に渡されたcharで配列を埋めていきます。サイズ変更後、サイズ変更された配列の新しいchar値とともに、以前の配列値を持たなければなりません。私は私のポストに例を挙げました。元の値が残っているように見えますが、サイズ変更された配列の値は新しく追加されたスロットを埋めます。 –