2014-02-21 2 views
0

간단한 문제가 있습니다.gcc와 경고의 그리스 문자

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

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

이 코드 조각을 사용하면 입력 자문을 구할 콘솔에서 그리스 문자 φ를 원하는 경우 문이 경우는 false.If 당신이 'F'로 'φ'을 변경 스스로 strangely.Try 행동 및 않습니다 반복 그것도 매력처럼 작동합니다. 또한 경고 멀티 문자 특성 상수를 받고있다 [-Wmultichar] |. 어떤 조언? 감사.

답변

2

아마도 터미널 에뮬레이터는 UTF8 인코딩을 사용하고 있습니다. 당신은 C 예에서 UTF8 읽기에 대한 설명을 많이 찾을 수 있습니다

"\317\206" (진수 문자열) 또는 "\xCF\x86" (16 진수 문자열) : 해당 인코딩 φ (U + 03C6 그리스의 SMALL LETTER PHI)에서 두 바이트 this blog entry

+0

x 용어를 기본 설정으로 사용하고 있습니다. 제안 사항이 있습니까? – chalask

+1

UTF-8을 사용하여 인코딩 된 문자를 읽는 함수를 작성하기위한 제안 사항은 무엇입니까? UTF-8을 읽으십시오. 첫 번째 바이트에는 시퀀스의 길이를 결정하는 데 충분한 정보가 있습니다. – ikegami

+0

그래서 현명한 코드를 변경해야합니까? 내가 얻은 경고는 어떨까요? – chalask