Это утверждение
player.name[num++][sizeof nom] = nom;
неверно.
По крайней мере, вы имеете в виду
strcpy( player.name[num++], nom );
Для этого необходимо включить заголовок
#include <string.h>
В противном случае выражение
player.name[num++][sizeof nom]
имеет тип char
, а правое выражение nom
имеет тип char *
.
Также этот вывод
printf("%d:%s\n", num, player.name[num]);
имеет неопределенное поведение, потому что переменная num уже была увеличена в приведенном выше выражении
player.name[num++][sizeof nom]
^^^^^
Вы должны написать как минимум
printf("%d:%s\n", num - 1, player.name[num-1]);