мда... буду потихоньку добавлять косяки (не принимать близко к сердцу если что, тоже могу ощибаться)

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

Там где заполняем массив... Зачем предлагать ввести ещё и дату, если можно ввести только год.
Но это бы ладно. Просто когда мы читаем строку, то ограничиваемся пробелом. Раз уж пошла практика использовать
для чтения MS run-time функции (лично я им симпатизирую wink.gif ), то удобней было бы использовать для чтения всех этих текстовых параметров ф-ии fgets - читает до перевода строки, а не до пробела.
Да и ограничения на размер текстовых полей. Мои не самые длинные fio еле вместились в 30 символов, а если взять, ну хотя бы фио "Выхухолев Иннокентий Иннокентиевич"? Кстати, если использовать fgets можно вместо фиксированных по длине текстовых полей оставить указатели char *.

Выкладывай исправленный, будем ковырять дальше.