На самом деле, функции "strcpy(ui.uCardNum,CN); strcpy(ui.uPIN,PIN);" у тебя работают не правильно и могут приводить к краху программы из-за порчи стэка. В дебаге даже ругнуться компилятор на это может. Эти строки копируют символы из одной строки в другую, пока не встретится нуль-терминант в строке источнике, а у тебя нуль-терминанта нигде нет. Теоретически, в этих местах могут хоть гигабайты мусора скопироваться...
Как уже сказали, нужно либо нуль-терминант в конце строк делать (но это увеличит размер каждой строки на один символ), либо выводить эти строки не как строку, а через форматную строку, посимвольно.