LINUX.ORG.RU

История изменений

Исправление COKPOWEHEU, (текущая версия) :

Стоит добавить еще костылей для кроссплатформенности:

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
 
#if defined(WIN32) || defined(_WIN32) //специальные костыли для виндовой консоли
  #pragma warning(disable : 4996)
  #define _CRT_SECURE_NO_WARNINGS 1
  #include <windows.h>
  #include "fcntl.h"
  #include <io.h>
  void coninit(){
    _setmode(_fileno(stdout), _O_U16TEXT);
    _setmode(_fileno(stdin), _O_U16TEXT);
  }
#else
  #define coninit()
#endif
 
int main(){
  coninit();
  setlocale(LC_ALL, "");
  wchar_t str[100];
  wprintf(L"Проверка ввода текста в консоли (h,в,λ). Введите текст: ");
  wscanf(L"%ls", str);
  for(int i=0; str[i]!=0; i++){
    wprintf(L"[%lc] = 0x%04X\n", str[i], (int)str[i]);
  }
  return 0;
}

Помимо современных систем, работает в win10. А вот в winXP уже нет. Костыли не всесильны. Костыли придуманы при вот этом обсуждении на форуме: https://www.cyberforum.ru/c-beginners/thread3109435-page4.html#post16991735

Исходная версия COKPOWEHEU, :

Стоит добавить еще костылей для кроссплатформенности:

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
 
#if defined(WIN32) || defined(_WIN32) //специальные костыли для виндовой консоли
  #pragma warning(disable : 4996)
  #define _CRT_SECURE_NO_WARNINGS 1
  #include <windows.h>
  #include "fcntl.h"
  #include <io.h>
  void coninit(){
    _setmode(_fileno(stdout), _O_U16TEXT);
    _setmode(_fileno(stdin), _O_U16TEXT);
  }
#else
  #define coninit()
#endif
 
int main(){
  coninit();
  setlocale(LC_ALL, "");
  wchar_t str[100];
  wprintf(L"Проверка ввода текста в консоли (h,в,λ). Введите текст: ");
  wscanf(L"%ls", str);
  for(int i=0; str[i]!=0; i++){
    wprintf(L"[%lc] = 0x%04X\n", str[i], (int)str[i]);
  }
  return 0;
}

Помимо современных систем, работает в win10. А вот в winXP уже нет. Костыли не всесильны.