用scanf输入字符得到时候,每按一个按键就会在屏幕上显示一个字符,现在要求写一个控制台程序,用户从键盘输入字符,程序先对输入的字符做检查,如果符合预定的标准则显示在屏幕上,否则不显示。关于控制台的标准句柄一直不是很清楚
1:在没有重定向标准句柄的情况下,所谓的标准输入句柄就是键盘的输入码?标注输出句柄就是屏幕缓冲区吗?
2:通过SetStdHandle 重定向了标准句柄之后,再GetStdHandle获得的句柄是原来的句柄还是SetStdHandle 传入的句柄?
3:用过CreateConsoleScreenBuffer和SetConsoleScreenBuffer修改了屏幕缓冲区之后std_out也变了吗?
4:用scanf getchar cin getline等函数输入字符,printf cout 等函数输入字符的时候是从什么地方读取或者是向什么地方输出?直接从键盘上读取还是从那个标准句柄中读取?

解决方案 »

  1.   

    在相关学习资料上有,_getch()
      

  2.   

    “现在要求写一个控制台程序,用户从键盘输入字符,程序先对输入的字符做检查,如果符合预定的标准则显示在屏幕上,否则不显示。”只是这么一个功能的话,那根本就不需要什么句柄,也没你想的那么麻烦。直接建一个string变量,存取输入(cin),然后用if比对,然后再输出(cout)就可以了。
      

  3.   

    你们都还没理解我的意思啊!!
    如果
    char str[];
    cin>>str;
    cout>>str;
    这样你执行到cin>>str;时,你在屏幕上输入字符串的时候屏幕上会有显示,cout输出时又会打印一遍,我要的效果是你在输入的时候屏幕上不显示,但是确实将输入的内容赋给了str变量!明白吗?
      

  4.   


    感觉没这个必要吧。你究竟是想拿来做什么东西?如果要那样,你就自己去分解cin吧。看看它的具体实现,然后修改出一个。