Проблема с WEOF

Недавно скомпилировал программу на виртуальной машине. ОС - linux. И возникла проблема с распознаванием конечного символа. Вот упрощенный код:

#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int main()
{
    setlocale(LC_ALL, "");
    wchar_t current_symbol;
    while ((current_symbol = getwchar()) != WEOF){
        ;
    }

    return 0;
}

Программа никогда не заканчивает свое действие. В чем проблема?


Ответы (1 шт):

Автор решения: Harry

Потому что getwchar() возвращает

wint_t getwchar();

Так что ваш current_symbol никак не может стать равным WEOF. Объявите его как wint_t.

Точно так же, как и getchar возвращает int, а не char - о чем с завидной регулярностью все забывают...

Да, надеюсь, вы закрываете входящий поток? Чем там в Linux - Ctrl-D, кажется?

→ Ссылка