История изменений
Исправление 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 уже нет. Костыли не всесильны.