Проход по двумерному массиву в функции

У меня возникла ошибка, у меня есть поле (двумерный массив), и в нем есть цифры, у которых нужно поменять знак на противоположный, например есть 1, -2, 2 на выходе должно получиться -1, 2, -2.

В принципе ничего сложного тут нету, но у меня возникла ошибка segmentation fault. Я не знаю точное количество столбцов (вместо семи может быть другое значение), и соответственно, не знаю как закончить цикл.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
 
void swp(const int size, int array[][size]);

int main() {
    int array[7][3] = { {1,-2,2}, {-3,-13,-10},{1,3,-1},{-45,32,0},{13,0,0},    {-3,13,-11},{1,0,-1} };
    swp(3,array);
    for (int y = 0; y < 7; y++) {
        for (int x = 0; x < 3; x++) {
            printf("%d ", array[y][x]);
        }
        printf("\n");
    }
    return 0;
}

void swp(const int size, int array[][size]) {
    int pt = size;
    int pc = 0;
    for (int y = 0; y < 100; y++) {
        for (int x = 0; x < pt; x++) {
            if (array[y][x] == '\0') {
                pc = pc + 1;
            }
            array[y][x] = array[y][x] * -1;
        }
       if (pc == size) {
           break;
       } else {
        pc = 0;
       }
    }
}

Ответы (1 шт):

Автор решения: Sergey

Надо просто указать размеры массива в самой функции:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
 
void swp(const int size1, const int size2, int array[size1][size2]);

int main() {
    int array[7][3] = { {1,-2,2}, {-3,-13,-10},{1,3,-1},{-45,32,0},{13,0,0},    {-3,13,-11},{1,0,-1} };
    swp(7, 3,array);
    for (int y = 0; y < 7; y++) {
        for (int x = 0; x < 3; x++) {
            printf("%d ", array[y][x]);
        }
        printf("\n");
    }
    return 0;
}

void swp(const int size1, const int size2, int array[size1][size2]) {
    for (int y = 0; y < size1; y++) {
        for (int x = 0; x < size2; x++) {
            array[y][x] = array[y][x] * -1;
        }
    }
}
→ Ссылка