Я не уверен, как изменить размер двумерного массива char ** с char ***. Массив char ** 2D передается через эту функцию изменения размера, как показано ниже.Как изменить размер двумерного массива двумерных указателей с помощью массива 3D-символов?
Здесь указанная функция:
resize_canvas(&C, 5, 6, 5, 10, 'e');
Это проходит через код ниже. Он печатает символ ***, но не тот размер, который мне нужен. Он должен иметь возможность изменять размер любого заданного размера из приведенных выше функций:
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;
}
}
Это не дает мне то, что я ищу. Предыдущий символ ** массив печатается следующим образом:
// C:
// ddddddd
// ddddddd
// ddddddd
// ddddddd
// ddddddd
// ddddddd
мне нужно, чтобы иметь возможность изменить размер, поэтому он может быть позже:
// C:
// ddddddeeee
// ddddddeeee
// ddddddeeee
// ddddddeeee
// ddddddeeee
Это были мои предыдущие функции, выделенные и заполненные полукокс ** 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' i.e 'd'? – sameerkn
@sameerkn, да, это цель, которую я считаю. Я буду заполнять массив символом, переданным 'wc'. После того, как он будет изменен, он должен иметь предыдущие значения массива вместе с новыми значениями char из измененного массива. Я привел пример в своем посте. Похоже, что исходные значения остаются, но значения из измененного массива заполняют вновь добавленные слоты. –