Создание функции, в которой я очищаю каждую позицию в двумерном массиве и делаю ее ячейкой символа по умолчанию - PullRequest
0 голосов
/ 29 октября 2018

Я создаю программу, которая реализует игру в крестики-нолики с использованием двумерного массива с несколькими функциями. Как бы я создал функцию, в которой она очищает все символы «x» и «o» в каждой ячейке, а ячейки сбрасывают ее обратно на символ подчеркивания «_»? Пример вместе с вашим объяснением был бы очень признателен!

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Вы можете использовать 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 и несколько других функций, которые делают это за вас, но убедитесь, что вы поняли, что они делают сзади. .

С наилучшими пожеланиями, чувак!

0 голосов
/ 29 октября 2018

Вы можете использовать memset для сброса массива на _, как показано ниже.

char array[10][10];
memset(array, '_',  sizeof(array));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...