Проверка правильности буквосочетаний - программа не распознает русские символы - C (СИ)
Формулировка задачи:
В русском языке, как правило, после букв Ж, Ч, Ш, Щ пишется И, А, У, а не Ы, Я, Ю. Проверить заданный текст на исполнение этого правила и исправить ошибки.
Текст должен считываться с помощью gets(); и ,желательно, выводится с помощью puts(text);
Собственно проблема в том, что программа не заходит даже в первое условие. Пробовал вместо русских букв писать английские и всё работало. <locale.h> с setlocale тоже писал, но в таком случае выводились "иероглифы".
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> int main() { char text[140]={0}; gets(text); for(int i=0;i<sizeof(text)-1;i++) { if((text[i]=='ж') || (text[i]=='Ж') || (text[i]=='ч') || (text[i]=='Ч') || (text[i]=='ш') || (text[i]=='Ш') || (text[i]=='щ') || (text[i]=='Щ')) { if(text[i+1]=='ы') text[i+1]='и'; if(text[i+1]=='я') text[i+1]='а'; if(text[i+1]=='о') text[i+1]='у'; } } puts(text); getch(); }
Решение задачи: «Проверка правильности буквосочетаний - программа не распознает русские символы»
textual
Листинг программы
#include <locale.h> int main(int argc, char** argv[]) { setlocale(LC_ALL, "RUS"); }
Объяснение кода листинга программы
- #include
Включает заголовочный файл , который содержит определения для работы с локалью. - int main(int argc, char argv[])** Функция main() является точкой входа в программу. Она принимает два аргумента: argc (количество аргументов, переданных программе) и argv (указатель на массив строк, содержащих аргументы).
- setlocale(LC_ALL,
RUS
); Устанавливает локаль на русскую локализацию с помощью функции setlocale(). Параметр LC_ALL указывает, что мы хотим изменить все аспекты локали (например, формат чисел, даты, времени и т.д.).RUS
- это код локали для русского языка. В данном коде ничего больше не происходит.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д