入力文字の値が正しく取得できません。ここに私のコードです:<alt-254>
によってWindows Cmd:入力文字を正しく取得できません。
#include <stdlib.h>
void main()
{
char buf_in[32] = { 0 };
printf("input: ");
gets_s(buf_in, 32);
for (int i = 0; i < 32; i++)
printf("%02x ", buf_in[i]);
getchar();
}
I入力文字が、しかし結果は74 00 00 ...
、ないfe 00 00 ...
です。
私のローカル環境はchcp 936
です。
そして、私はいくつかの異なるローカル環境で(ANSIコードページ936)をテスト:
1. OEMコードページ936結果:74 00 00 ...
2. OEMコードページ65001結果:00 00 00 ...
(変な)
3. OEMコードページ1250結果:3f 00 00 ...
4. OEMコードページ437結果:5f 00 00 ...
charではなくunsigned charはどうですか?ここに記事があります。 http://stackoverflow.com/questions/4337217/difference-between-signed-unsigned-char – user2443447
@ user2443447いいえ、それは動作しません – dcnh35
ほとんどすべての入力メソッドを試しました。最も近いのは、[C++でのUnicodeの使い方?](http://stackoverflow.com/q/3010739/3439404)のスレッドから、 'std :: wcin'または' wscanf'と思われます。 – JosefZ