私の大学では、キリル文字の入力とテキストをコンソールにサポートし、ファイルに書き込むCプロジェクトを書くための教訓があります。しかし、charデータ型とprintf scanf関数のみを使用することができます。C wchar_tの代わりに標準charデータ型を持つキリルコンソール入力
私はこれを行う方法を研究しており、UTF16にエンコードを設定してwchar_tを使用すると、キリル文字がサポートされるという解決法を見つけました。しかし、それは私にwchar_t関数wprintf、wscanfなどを使用させます。実際にはオプションではありません。
これは私が今持っているコードですが、コンソールに奇妙なシンボルが印刷されます。
int main(void) {
setlocale(LC_ALL, "bg-BG");
char str[80];
printf("Въведи текст: "); //Enter text:
scanf("%s", str);
printf("Ти въведе: %s", str); //You entered:
getch();
return 0;
}
私が欠けている何かまたは誤解がありますか?私の知る限りでは、C/C++ ASCIIテーブルが範囲0を持つ唯一の英語の文字をサポート - 127
運とApparantly何とか
> 127コードでキリル文字セットを持つなどWIN1251、KOI-8、のような8ビットエンコーディングがありますが、しかし、それは本当にでサポートされている文字セットに依存するであろうコンソール。 –
私には明らかな解決策は、エンコーディングをUTF-8に設定することです。標準の 'char'ベースの関数を使ってUnicodeテキストを読み書きすることができますが、非ASCII Unicode文字はすべて2つ以上の' char'オブジェクトとして表現されることに注意してください。あなたが慎重でなければ、それはあなたを様々な方法で動かすことができます。 –
なぜwchar_t関数は「本当にオプションではないのですか? – Toby