Неверная кодировка при работе с кириллицей - C (СИ)
Формулировка задачи:
Вводится строка и каждый 2й '!' меняется на '$'. При вводе русских букв вместо их печатаются какието каракули,както данную проблему решить можно? Сообщения типа "Измененная строка" отображаются нормально,проблема только с строкой вводимой с клавиатуры.Компилятор MS VS 2008.
#include <stdio.h> #include <conio.h> #include <math.h> #include <process.h> #include <locale.h> #include <malloc.h> #include <string.h> void zamena(char*); void main ( ) {setlocale(LC_CTYPE, "Russian"); char c ; char *s; s= new char[100]; int i; printf ("введите строку\n"); gets (s); printf("\n \n"); puts(s); zamena(s); //printf("sum=%d\n",sum); printf("\n Измененная строка\n"); puts(s); _getch(); } void zamena(char*s){ int i, j; int sum; sum=1; for (i=0;i<=strlen(s);i++){setlocale(LC_CTYPE, "Russian"); if(s[i] == '!'){sum=sum+1; if (sum%2) { s[i] = '$';}}} }
Решение задачи: «Неверная кодировка при работе с кириллицей»
textual
Листинг программы
#include<Windows.h> SetConsoleCP(866);
Объяснение кода листинга программы
- Включаем библиотеку Windows.h - это позволяет использовать функции Windows API в нашем коде.
- Устанавливаем кодовую страницу 866 для консоли с помощью функции SetConsoleCP. Это позволяет работать с символами кириллицы в консоли.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д