Как указано в других ответах и комментариях, вы должны поменять местами использование x и y, поэтому
positions[x][y]
должно быть positions[y][x]
.
Кроме того, вы не используете правильный тип для хранения результата mvinch
. В curses.h
говорится:
typedef unsigned long chtype;
, поэтому вы должны распределить память следующим образом:
chtype ** positions;
positions = malloc(sizeof(chtype *) * 25);
positions[y] = malloc(sizeof(chtype) * 100);
И включите предупреждения вашего компилятора, потому что компилятор должен был пометить эту ошибку.