2016-11-21 84 views
0

我無法正確輸入字符值。這裏是我的代碼: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(); 
} 

我輸入的<alt-254>人物,但結果是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

怎麼樣unsigned char而不是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

不是。 [通過Windows控制檯支持ALT代碼**(http://superuser.com/a/1047961/376602)。也許使用['wchar'而不是'char'](http://stackoverflow.com/questions/7496203/char-vs-wchar-t)可以幫助嗎? – JosefZ

+0

@JosefZ不工作 – dcnh35

+0

當你從文件重定向輸入時它工作嗎? – Mazi