Как именно работать со строками, содержащими кириллицу в C?
Я новичок. Не могу разобраться, как именно работать со строками, содержащими кириллицу в си. Суть в том, что нужно ввести с клавиатуры переменные, содержащие символы русского алфавита, и обработать их в соответствии с условным заданием. Пробовал изучать литературу, касающуюся работы с unsigned char, locale, wchar_t, но безрезультатно.
Ответы (1 шт):
Ты ищёшь не совсем там. unsigned char, wchar_t -- это типы переменных: воспринимай их как инструмент для обработки.
Как заметили в комментариях, для работы с кириллицей, тебе нужно знать используемую кодировку:
- Если ты пишешь под
ОС Windows, то вводимые тобой с клавиатуры символы, скорее всего, будут относиться кcp866. Все символы в ней, включая кириллицу, имеют длину 1 байт. Потому, тебе подойдёт типunsigned char(именно беззнаковый, т.к. знаковый может игнорировать верхний бит 7 в значении, из-за чего символы кириллицы могут восприниматься как символы ASCII). Для обработки символов тебе пригодится таблица символов этой кодировки. - Если же ты пишешь под
ОС Linux, то твоя программа, скорее всего, будет получать символы кодировкиUTF-8(зависит от конфигурации, лучше проверить). Кириллица, используемая в современном русском языке, кодируется в UTF-8 двумя байтами (устаревшие символы, вроде [ять], могут кодироваться большим числом байтов), потому типunsigned charтебе не подойдёт -- требуется двубайтовый беззнаковый тип. Например,unsigned short(также требует перепроверки).
В любом случае, твой вопрос касается кодировки, а не типа переменной.
upd: в комментариях намекают, что при обработке символов использовать жёстко определённый размер символа -- не лучшая практика, т.к. размер кодируемого символа может сильно варьироваться.