Ну, например, переменная k вообще нам не нужна, а у меня на неё VS ругается - использование неиниц. переменной, говорит.
Предлагаю в функцию init вообзе ничего не передавать, просто объявить WK wk; внутри ф-ии.
Там где заполняем массив... Зачем предлагать ввести ещё и дату, если можно ввести только год.
Но это бы ладно. Просто когда мы читаем строку, то ограничиваемся пробелом. Раз уж пошла практика использовать
для чтения MS run-time функции (лично я им симпатизирую

Да и ограничения на размер текстовых полей. Мои не самые длинные fio еле вместились в 30 символов, а если взять, ну хотя бы фио "Выхухолев Иннокентий Иннокентиевич"? Кстати, если использовать fgets можно вместо фиксированных по длине текстовых полей оставить указатели char *.
Выкладывай исправленный, будем ковырять дальше.