Вы можете использовать memset так, как вам нужно, это быстро и безопасно. ( посмотреть ответ @ Kiran ).
Но я тебе кое-что объясню.
Если вам интересно, как это работает на back end , вы можете воспроизвести его самостоятельно ?
Введение ->
Вы можете сделать все функции стандартной библиотеки только для вашего личного понимания . Вы можете создать свою собственную библиотеку, которая ничего не делает, не меньше, чем libs с префиксом "my" на каждой функции. Лучше понять больше, чем просто читать документацию иногда, но у каждого человека нет такого вида ума . Уверяю, я никогда не говорил, что один из этих методов лучше другого, просто иногда он лучше для себя . Я принимал все методы во время моего опыта, потому что иногда вам нужен тот или иной раз, когда вам нужен другой.
Решение ->
lenght_array_2D(char **2D_array) // A func which will return the length of your array
{
int i = 0;
if (!2D_array)
return (0);
for (; 2D_array[i] ; i++) {
//todo something such as debug log.
}
return (i);
}
[...]
int y = lenght_array_2D(your_2Darray);
while (i < y) { // walk into your array
for (int j = 0 ; array[i][j] ; j++) { //check on each line if you have the pattern asked
if (array[i][j] == 'x' || array[i][j] == 'o')
array[i][j] = '_'; // if it is, you can replace it.
}
i++;
}
Постарайтесь понять, какой конец функции вы используете, это полезно для вашего собственного понимания и вашего опыта.
Я надеюсь, что вы хорошо поняли, что в конечном итоге вы будете использовать memset и несколько других функций, которые делают это за вас, но убедитесь, что вы поняли, что они делают сзади. .
С наилучшими пожеланиями, чувак!