Работа с русским алфавитом - C (СИ)
Формулировка задачи:
Допустим, требуется решить такую задачу.
Пользователь вводит строку. Заменить в строке буквы Ё на Е.
Такой вариант не работает:
Как сделать правильно?
#include <stdio.h>
int main()
{
char str[1000];
gets(str);
int i, n = 0;
for (i = 0; str[i] != '\0'; ++i)
if (str[i] == 'Ё')
str[i] = 'Е';
printf("%s\n", str);
return 0;
}Решение задачи: «Работа с русским алфавитом»
textual
Листинг программы
int main(int argc,char** argv)
{
char pszText[MAX_PATH +1];
gets(pszText);
for (int ii = 0; pszText[ii]; ++ii)
{
if ((unsigned char)pszText[ii] == 0xF0)
{
pszText[ii] = (char)0x85;
}
}
printf("%s\n",pszText);
return 0;
}
Объяснение кода листинга программы
- Объявлена переменная
pszTextтипаcharс размером вMAX_PATH + 1. - В цикле
forпроисходит проход по всем символам в строкеpszText. - Если текущий символ имеет код 0xF0 (то есть 240 в десятичной системе), то он заменяется на символ с кодом 0x85 (133 в десятичной системе).
- После прохода по всем символам, выводится измененная строка
pszText. - Возвращается 0, что означает успешный конец работы программы.