Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Широкие символы (wchar) в С  (Прочитано 761 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн trongsund

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Широкие символы (wchar) в С
« : 04 Апреля 2016, 14:58:18 »
#include<stdio.h>
#include<stdlib.h>
#include<wchar.h>
#include<locale.h>

using namespace std;

int main()
{
int m, n;
printf("%d\n", sizeof(wchar_t));
scanf("%d %d", &m, &n);
for (int i = m; i < n; i++)
{
wprintf(L"A%c ", (wchar_t)i);
if (!((i-m+1)%16)) printf("\n");
}
printf("\n");
return 0;
}

Запускаю я этот код обычным способом

g++ unicoda.cpp -o unicoda
и набираю напечатать символы с номерами, например, от 32 до 256. Не выводит не только символ, но и саму букву "А".

Причём выводит пустоту даже после такой модификации
#include<stdio.h>
#include<stdlib.h>
#include<wchar.h>
#include<locale.h>

using namespace std;

int main()
{
int m, n;
printf("%d\n", sizeof(wchar_t));
scanf("%d %d", &m, &n);
for (int i = m; i < n; i++)
{
printf("A");
wprintf(L"A%c ", (wchar_t)i);
if (!((i-m+1)%16)) printf("\n");
}
printf("\n");
return 0;
}

Что тут может быть не так? Воспользовался поиском, ничего не нашёл подходящего :(

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 755
    • Просмотр профиля
Re: Широкие символы (wchar) в С
« Ответ #1 : 04 Апреля 2016, 15:09:05 »
Если не ошибаюсь, то нельзя в одной программе использовать printf и wprintf одновременно. Замена везде на wprintf помогает.

 

Страница сгенерирована за 0.372 секунд. Запросов: 26.