2014-02-21 96 views
0

我有一個簡單的問題。gcc中的希臘字符和警告

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

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

這段代碼它自己的行爲strangely.Try如果你想to.If您輸入控制檯希臘字母φ,if語句是false.If你改變「φ」到「f」和重複它的作品就像一個魅力。也得到警告多字符字符常量[-Wmultichar] |。任何建議?謝謝。

回答

2

很可能您的終端仿真器正在使用UTF8編碼。在該編碼φ(U + 03C6 GREEK小寫字母PHI)是兩個字節:"\317\206"(八進制字符串)或"\xCF\x86"(十六進制字符串)

可以找到很多的解釋關於用C例如讀取UTF8 this blog entry

+0

我使用x項與默認settings.Any建議? – chalask

+1

寫一個讀取使用UTF-8編碼的字符的函數的建議?請閱讀UTF-8。第一個字節中有足夠的信息來確定序列的長度。 – ikegami

+0

所以我應該改變一些明智的代碼?我得到的警告呢? – chalask