| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1660 人关注过本帖
标题:怎样只按一个键,就做出反应?
只看楼主 加入收藏
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
结帖率:91.53%
收藏
已结贴  问题点数:20 回复次数:3 
怎样只按一个键,就做出反应?
我在复习C语言,由于在命令提示中,和编写的程序交互,需要反复输入程序名,太烦了

我就写了个批处理,功能就是反复编写代码,编译程序并运行,输入一些数据看效果,暂停,再根据暂停时做出的选择继续编写代码或调试

我从网上扒了一个类似暂停的程序,改了改,代码如下:
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    char yourPressChar;
    printf("按'R'键再执行一次,按'C'键清屏或按其他键不清屏并返回编辑状态:");    
    while(scanf("%c",&yourPressChar)!=EOF)
    {
        getchar();        
        if (yourPressChar=='r' || yourPressChar=='R')
        {
            //printf("你按了r键,将再次执行上一程序,以观察运行结果");
            //这个暂停可以被其他任何程序和批处理调用的话,要能检测到是被哪个程序调用
            system("D:/studyC/test.exe");
            printf("按'R'键再执行一次,按'C'键清屏或按其他键不清屏并返回编辑状态:");
        }
        else if (yourPressChar=='c' || yourPressChar=='C')
        {
            //printf("你按了c键,将清屏,并返回编辑状态");
            system("clear");
            break;
        }
        else
        {
            //printf("你按了其它键,将不清屏,并返回编辑状态");
            break;
        }
    }
    return 0;
}


运行效果如下图:
图片附件: 游客没有浏览图片的权限,请 登录注册


那么,问题来了:每次都要按一个键,如“c”或者“r”,然后还要按回车。这显得太不高大上了,怎么才能按一个键就做出反应呢?
搜索更多相关主题的帖子: 暂停 printf 返回 编辑 状态 
2019-03-30 23:14
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
收藏
得分:20 
conio.h库下的getch()函数,不需要回车就可以读取数据

char ch;
ch = getch();
2019-03-31 00:39
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
收藏
得分:0 
回复 2楼 word123
完善的解决了我的问题,谢谢

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2019-03-31 06:00
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
int main(void)
{
    char yourPressChar;
    printf("按'R'键再执行一次,按'C'键清屏或按其他键不清屏并返回编辑状态:");    
    while(yourPressChar!=EOF)
    {
        yourPressChar=getch();        
        if (yourPressChar=='r' || yourPressChar=='R')
        {
            printf("%c",yourPressChar);  Sleep(500);
            //这个暂停可以被其他任何程序和批处理调用的话,要能检测到是被哪个程序调用
            system("D:/studyC/test.exe");
            printf("按'R'键再执行一次,按'C'键清屏或按其他键不清屏并返回编辑状态:");
        }
        else if (yourPressChar=='c' || yourPressChar=='C')
        {
            printf("%c",yourPressChar);  Sleep(500);
            system("clear");
            break;
        }
        else
        {
            printf("%c",yourPressChar);  Sleep(500);
            break;
        }
    }
    return 0;
}


颇具逼格,日后完善。

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2019-03-31 06:23
快速回复:怎样只按一个键,就做出反应?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040827 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved