huidong

首页 | 会员登录 | 关于争取 2022 寒假做出汇东网 Ver3.0.0 !
搜索文章


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;
}


图片.png



返回首页


Copyright (C) 2018-2024 huidong