zoukankan      html  css  js  c++  java
  • 任意键开始、暂停

    大家写程序的时候,经常会遇到“按任意键开始”、“按任意键继续”等这样的功能。其实这样的功能实现起来也并不困难,下面总结几种方法,经供参考:

    任意键继续

    1、_getch() 

    _getch() 是 conio.h 里面声明的一个函数,功能是从控制台输入一个字符(控制台不显示该输入),使用时直接添加即可实现“按任意键继续”。

    2、system("pause")

    system 是 stdlib.h 里面声明的一个函数,功能是通过控制台执行一个命令。该函数需要一个字符串指针参数表示命令。

    使用时,输入"pause"指令即可。 "pause"就是 system 函数将要执行的命令,缺点是该命令会暂停并显示信息“Press any key to continue ... 。

    任意键开始

    这里我提供一种利用while()循环实现的方法:

    	while (!_kbhit()); // 没有按键就死循环   按下任意键开始
    	//清空缓冲区
    	FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));

    Windows 系统下的 vs 中可以使用 _kbhit() 函数来获取键盘事件,使用时需要加入 conio.h 头文件。由于按键时输入缓冲区的内容可能对程序运行产生影响,这里调用了 FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)) 函数清空缓冲区。

    空格暂停、继续

    另外,有些时候可能需要暂停、继续的功能,通常习惯用空格键控制,下面提供了一种方法:

        char key = _getch();        //获得按键
        if(key == ' ')
        {
            lable:
                while (!_kbhit()); // 没有按键就死循环   按下任意键开始
                if (_getch() != ' ')	goto lable;    //再次检测到空格继续
        }
    
        如果不想用 goto 语句,也可以用这种写法
        if (_getch() == ' ')
        {
            while (1)  
            {
                //fputs("pause", stdout);	//向屏幕输出提示信息
                if (_getch() == ' ')
                    break;
            }
        }
  • 相关阅读:
    【纯水题】POJ 1852 Ants
    【树形DP】BZOJ 1131 Sta
    【不知道怎么分类】HDU
    【树形DP】CF 1293E Xenon's Attack on the Gangs
    【贪心算法】CF Emergency Evacuation
    【思维】UVA 11300 Spreading the Wealth
    【树形DP】NOI2003 逃学的小孩
    【树形DP】BZOJ 3829 Farmcraft
    【树形DP】JSOI BZOJ4472 salesman
    【迷宫问题】CodeForces 1292A A NEKO's Maze Game
  • 原文地址:https://www.cnblogs.com/TaoR320/p/12680192.html
Copyright © 2011-2022 走看看