getch得到英文输入不说了。
如果getch得到的是中文输入,它会返回一个负数值,为什么呢。
因为中文需要2个字节,所以存储在char*中需要两个字节大小的位置。但是怎么样知道这两个字节存储的是同一个中文字符呢,所以为了表示这两个字节存储的都是同一个字符,这两个字节中存储的都是负数。
getch也一样,如果得到了中文输入,他也会返回一个负数值,但是返回的是char,但是中文应该是两个字节,应该是char[3](多出一个字节表示\0)啊?
所以当getch会返回两次值,一次是第一个字节的值,第二次是第二个字节的值,自己将其组装起来即可。
要得到第二次返回的值,再次调用getch一次即可。
所以总结如下:
#include <stdio.h>
#include <conio.h>
void GetInput()
{
char ch = getch();
if(ch < 0)
{
char ch2 = getch();
char chinese[3] = { 0 };
chinese[0] = ch;
chinese[1] = ch2;
printf("%s",chinese);
}
else
{
printf("%c",ch);
}
}
int main()
{
while(true)
{
if(kbhit())
{
GetInput();
}
}
return 0;
}