【发布时间】:2017-04-04 15:48:39
【问题描述】:
我无法正确获取我的输入字符值。这是我的代码:
#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 ...
【问题讨论】:
-
用 unsigned char 代替 char 怎么样。这是一篇文章。 stackoverflow.com/questions/4337217/…
-
@user2443447 不,它不起作用
-
几乎所有输入法都试过了;最接近的似乎是来自How to use Unicode in C++? 线程的
std::wcin或wscanf……