Проблема с 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, кажется?