2014-02-21 3 views
0

У меня есть простая проблема.Греческие символы в gcc и предупреждение

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    char c=getc(stdin); 
    if (c=='φ') 
    { 
     printf("in"); 
    } 
} 

Этот фрагмент кода действительно ведет себя strangely.Try это самостоятельно, если вы хотите to.If вы вводите греческий символ ф в консоль, если утверждение false.If изменить «ф» к «е» и повторите, он работает как шарм. Также получал предупреждающий многосимвольный символ постоянный [-Wmultichar] |. Любой совет? Спасибо.

ответ

2

Очень вероятно, что ваш эмулятор терминала использует кодировку UTF8. В этой кодировке φ (U + 03C6 GREEK SMALL LETTER PHI) составляет два байта: "\317\206" (восьмеричное строка) или "\xCF\x86" (шестнадцатеричная строка)

Вы можете найти много объяснений о чтении UTF8 в C, например, this blog entry

+0

Я использую x термин с настройками по умолчанию. Все предложения? – chalask

+1

Предложения для записи функции, которая читает символ, закодированный с использованием UTF-8? Читайте на UTF-8. В первом байте достаточно информации для определения длины последовательности. – ikegami

+0

, так что я должен что-то изменить код мудро? Как насчет предупреждения, которое я получаю? – chalask

Смежные вопросы