2016-11-21 12 views
0

入力文字の値が正しく取得できません。ここに私のコードです:<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 ...

+0

charではなくunsigned charはどうですか?ここに記事があります。 http://stackoverflow.com/questions/4337217/difference-between-signed-unsigned-char – user2443447

+0

@ user2443447いいえ、それは動作しません – dcnh35

+0

ほとんどすべての入力メソッドを試しました。最も近いのは、[C++でのUnicodeの使い方?](http://stackoverflow.com/q/3010739/3439404)のスレッドから、 'std :: wcin'または' wscanf'と思われます。 – JosefZ

答えて

0

私はALT-コードはWindowsコンソールでサポートされていないと思います。ここを見て下さい: Alt Codes in Batch

あなたはファイルでALT-コード(または他の任意のデータを...)配置し、あなたのプログラムへの入力をリダイレクトしようとすることができます

./prog.exe < INPUT.TXT

あなたは私はそれが他の文字のために働くん

(XVI32のような)バイナリエディタを使用することをお勧めファイルに適切な値を入れていることを確認しますか?

+1

Nope。 [ALTコード**はWindowsコンソールでサポートされています**](http://superuser.com/a/1047961/376602)。たぶん '' char''の代わりに '' wchar'を使用しています(http://stackoverflow.com/questions/7496203/char-vs-wchar-t)? – JosefZ

+0

@JosefZ not work – dcnh35

+0

ファイルから入力をリダイレクトするときに機能しますか? – Mazi

関連する問題