перестановка строк динамического 2d массива в C - PullRequest
0 голосов
/ 05 мая 2018

Я хочу поменять две строки массива строк в C.

например:

первый ряд второй ряд

после обмена: второй ряд, первый ряд

Как должна выглядеть эта функция, функция swap_rows () не работает. Должен ли я использовать функцию strcpy() как-то?

Что я сделал:

</p>

<pre><code>#define N 100
</code>

статический символ ** str_tab;

void tab_alloc(const int M) { str_tab = (char **)malloc((M * sizeof(char *))); for (int i = 0; i < M; i++) str_tab[i] = (char *)malloc(N * sizeof(char)); } void tab_fill() { size_t M = _msize(str_tab) / sizeof(char *); for (int i = 0; i < M; i++) gets_s(str_tab[i], N); } void swap_rows() { int row1, row2; puts("Which rows u want swap?"); puts("put 1:"); scanf_s("%d", &row1); puts("put 2:"); scanf_s("%d", &row2); char *temp = str_tab[row1]; strcpy(str_tab[row1], str_tab[row2]); // str_tab[row1] = str_tab[row2]; strcpy(str_tab[row2], temp); // str_tab[row2] = temp; }

1 Ответ

0 голосов
/ 05 мая 2018

Вы можете просто поменять местами указатели.

void swap_rows(char **array, int row1, int row2) {
    char *temp = array[row1];
    array[row1] = array[row2];
    array[row2] = temp;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...