Вывод знаков русского алфавита и псевдографики
в консольное окно DOS-режима.
Всем программистам известно, что скан-коды символов русского алфавита
начинаются с числа 128. Но если посмотреть их реальное значения в таблице скан-кодов
операционной системы MS-DOS, то они все они отрицательны. Это сделано потому, что на
один символ выделяется только один байт оперативной памяти, а в один байт можно записывать
числа, входящие только в диапазон от -127 до 127.
Следовательно, при выводе на экран неанглийской буквы к ее скан-коду
добавляется поправочный коэффициент, переводящий код в положительное значение, соответствующее
табличному. Но возникает вопрос, чему равен этот коэффициент поправки? Код буквы "А" равен
-64, чтобы получить ее табличное значение, равное 128 надо прибавить к реальному скан-коду
-64. Применив при для вывода на монитор русского текста такой оператор
printf( "%c", CharArray[ i ] + 'А' );
Вы частично сможете решить задачу. Вы спросите почему частично? Дело в том, что после
буквы "п" в таблице следуют скан-коды псевдографики, вместо положенной русской буквы. Поэтому
к оператору поправки придется добавить еще и контроль расположения выводимой буквы в таблице,
что будет иметь такой вид:
if( CharArray[ i ] >= 'А' && CharArray[ i ] < 'р' )
printf( "%c", CharArray[ i ] + 'А' );
else
printf( "%c", CharArray[ i ] + 'р' );
это целиком решит проблему вывода русского текста на экран монитора в режиме консоли MS-DOS.
Продемонстрировать применение этого принципа вывода руского текста
может программа RUSS_CON.EXE, в окне которой наглядно будут отображены
отличия массивов скан-кодов:

Код программы Вы можете вызвать здесь.
Аннотация