Как мне изменить все элементы в массиве символов на одинаковые?

#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] = ‘ ‘; } } Решил проблему