| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 965 人关注过本帖
标题:简单问题的求教,不能运行题出在哪里?
只看楼主 加入收藏
qq1625127317
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 7楼 诸葛欧阳
函数名:kbhit()(VC++6.0下为_kbhit())功 能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0

静坐常思己过,闲谈莫论人非
2015-10-10 12:33
qq1625127317
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 6楼 hjx1120
我就是想试试 kbhit()函数的作用,,怎么解决呢?

静坐常思己过,闲谈莫论人非
2015-10-10 12:34
qq1625127317
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 10楼 TonyDeng
啊?什么意思。。。我按了一下也没什么反应。。

静坐常思己过,闲谈莫论人非
2015-10-10 12:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
编程时按F1得帮助

授人以渔,不授人以鱼。
2015-10-10 13:53
qq1625127317
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 14楼 TonyDeng
奥,,晓得了

静坐常思己过,闲谈莫论人非
2015-10-10 17:49
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
查到什麼收穫了?

授人以渔,不授人以鱼。
2015-10-10 22:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用qq1625127317在2015-10-9 12:22:29的发言:

#include<stdio.h>
#include<conio.h>
void main()
{
    if(_kbhit())
    {
        char ch;
        ch = getchar();
        switch(ch)
        {
            case 'w' : printf("嘻嘻");break;
            case 's' : printf("哼哼");break;
            case 'a' : printf("哈哈");break;
            case 'd' : printf("嘿嘿");break;
            default : break;
        }
    }
}


你這個程序肯定“不能運行”了。_kbhit()檢測當前鍵盤緩衝區中是否有待輸入數據,而如果你啟動本程序的時候恰好沒有預按鍵,那麼_kbhit()返回零,if()被跳過,程序直接結束。程序不是沒有運行,而是運行了“一閃即逝”,根本沒有輸出。

授人以渔,不授人以鱼。
2015-10-10 22:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
要讓此程序有反應,改用循環。具體怎麼改,根據上面我告訴你的邏輯自己想。

你看人家MSDN給的例子:
程序代码:
// crt_kbhit.c
// compile with: /c
/* This program loops until the user

 * presses a key. If _kbhit returns nonzero, a

 * keystroke is waiting in the buffer. The program

 * can call _getch or _getche to get the keystroke.

 */

#include <conio.h>
#include <stdio.h>

int main( void )
{
   /* Display message until key is pressed. */
   while( !_kbhit() )
      _cputs( "Hit me!! " );

   /* Use _getch to throw key away. */
   printf( "\nKey struck was '%c'\n", _getch() );
}


[ 本帖最后由 TonyDeng 于 2015-10-10 22:19 编辑 ]

授人以渔,不授人以鱼。
2015-10-10 22:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
順便說一下:在vc系列中,凡是在函數名前面帶_前綴的,都屬於Microsoft擴展,並非標準庫函數,與實現有關。當然,很多標準庫函數,本身也是沒有規定如何實現的(因為標準本來也沒有規定如何實現,那是不可能規定的),那些函數內部也可能會用到非標準函數,祗不過你不知道而已。

授人以渔,不授人以鱼。
2015-10-10 22:18
qq1625127317
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 17楼 TonyDeng
对!就是这种情况!刚刚进去就直接结束了。。。那个按 F1 我上面显示的是“不能显示帮助,缺少成分,要重新安装,”

静坐常思己过,闲谈莫论人非
2015-10-10 22:35
快速回复:简单问题的求教,不能运行题出在哪里?
数据加载中...
 
   



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

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