Неверная кодировка при работе с кириллицей - 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);

Объяснение кода листинга программы

  1. Включаем библиотеку Windows.h - это позволяет использовать функции Windows API в нашем коде.
  2. Устанавливаем кодовую страницу 866 для консоли с помощью функции SetConsoleCP. Это позволяет работать с символами кириллицы в консоли.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы