1

Тема: ввод-вывод в "С" кириллицы строкой

Добрый день друзья  smile
Есть код:

#include <stdio.h>
#include <locale.h>
#include <wchar.h>
int main(void)
{
  wchar_t wch;
  puts("Введите русские буквы без пробелов");
  wscanf(L"%s", &wch);
  wprintf(L"Элемент %s\n", wch);
  return 0;
}

но он не работает в убунту-линукс. Не выводит в консоли введенные подряд русские символы. Помогите разобраться. Спасибо заранее.

2

Re: ввод-вывод в "С" кириллицы строкой

wprintf(L"Элемент %s\n", wch);

перед wch точно ничего не должно быть?

3

Re: ввод-вывод в "С" кириллицы строкой

Если вводить строку, то так:

#include <stdio.h>
#include <locale.h>
#include <wchar.h>
int main(void)
{
  wchar_t wch[256];
  if (! setlocale(LC_ALL, "ru_RU.utf8")) 
      return 1;
  wprintf(L"Введите русские буквы без пробелов: ");
  wscanf(L"%s", wch);
  wprintf(L"\nЭлемент %s\n", wch);
  return 0;
}

а вот с вводом одиночного символа проблемы. Это не выдает ошибок при компиляции, но и не работает:

#include <stdio.h>
#include <locale.h>
#include <wchar.h>
int main(void)
  {
    setlocale(LC_ALL, "ru_RU.utf8");
    wchar_t wch;
    puts("Введите русскую букву:");
    wscanf(L"%c", &wch);
    wprintf(L"Элемент %c\n", wch);
    return 0;
  } 

Добавлено: 27-07-2016 13:59:58

вот так правильно - нашел тут http://www.cplusplus.com/reference/cwchar/wscanf/

int main(void)
{
  setlocale(LC_ALL, "ru_RU.utf8");
  wchar_t wch;
  wprintf(L"Введите букву:\n");
  wscanf(L"%lc", &wch);
  wprintf(L"\nбуква: %lc\n", wch);
  return 0;
}