#arrays #c
#массивы #c
Вопрос:
У меня есть массив символов 2D (3×3), и я хочу изменить каждый элемент на пробел ‘ ‘.
char array[3][3];
Как я могу использовать для этого элемент массива «координаты»?
Не удается добавить заголовки
Комментарии:
1. Используется
memset()
для присвоения всем байтам одного и того же значения.2. Если вы хотите использовать «координаты» массива, вам понадобятся два вложенных
for
цикла, напримерfor (int row=0; row<3; row ) { for (int col=0; col<3; col ) { array[row][col] = ' '; }}
Ответ №1:
Вам не нужно использовать координаты. memset()
может использоваться для присвоения всем char
элементам одного и того же значения.
memset(array, ' ', sizeof(array));
(обратите внимание, что это не может быть использовано для многобайтовых типов, таких как int
, за исключением особых случаев, таких как установка на ноль)
Комментарии:
1. Я забыл упомянуть, что я не могу добавлять заголовки, хотя с помощью memset он просит меня добавить #include <string.h>
Ответ №2:
В вашем вопросе неясно, хотите ли вы использовать значения array
в качестве строки в таком случае:
size_t rows = sizeof array / sizeof *array;
size_t cols = sizeof *array / sizeof **array;
for (size_t row = 0; row < rows; row )
{
size_t col = 0;
for (; col < cols - 1; col )
{
array[row][col] = ' ';
}
array[row][col] = '';
}
если вы хотите заполнить весь массив пробелами:
size_t rows = sizeof array / sizeof *array;
size_t cols = sizeof *array / sizeof **array;
for (size_t row = 0; row < rows; row )
{
for (size_t col = 0; col < cols; col )
{
array[row][col] = ' ';
}
}
Поскольку второй фрагмент не завершает элементы массива нулевым значением, их нельзя использовать как строки.
Комментарии:
1. Спасибо, for (size_t row = 0; row < строки; строка ) { for (size_t col = 0; col < cols; col ) { array[row][col] = ‘ ‘; } } Решил проблему