| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 613 人关注过本帖
标题:关于while输入的问题
只看楼主 加入收藏
newCpp
Rank: 5Rank: 5
来 自:火星
等 级:职业侠客
威 望:3
帖 子:256
专家分:375
注 册:2009-8-17
结帖率:97.83%
收藏
已结贴  问题点数:20 回复次数:4 
关于while输入的问题
比如我定义了一个 char h[10];的字符数组
我该如何让他在输入完成10个元素后就不能在输入字符了。
这个我该怎么解决,谢谢各位大鸟帮忙照顾一下下新人嘛!!!
谢谢
我试了很多次没有成功。 我晕
搜索更多相关主题的帖子: 输入 
2009-08-31 17:30
yuc1987624
Rank: 1
等 级:新手上路
帖 子:4
专家分:8
注 册:2009-6-22
收藏
得分:5 
cin.get(h,10);
或 cin.getline(j,10);
2009-08-31 21:54
xufen340
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:166
专家分:1351
注 册:2009-8-7
收藏
得分:5 
#include <iostream>
#include<conio.h>
using namespace std;
int main ()
{
    char h[10];
    int i=0;
    char key;
    while(!kbhit())
        {
          key=getch ();
          if((key==27)||(key<0)) break;

          h[i]=key;
          cout<<h[i];
          i++;
          if(i==10) {
              for(int j=0;j<10;j++) {
                  cout<<endl;
                  cout<<h[j];
              }
              cout<<endl;
              i=0;
          }
        }

    return 0;

}
2009-09-01 07:53
xufen340
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:166
专家分:1351
注 册:2009-8-7
收藏
得分:5 
getche是带回显的,就没必要cout了。
#include <iostream>
#include<conio.h>
using namespace std;
int main ()
{
    char h[10];
    int i=0;
    char key;
    while(!kbhit())
        {
          key=getche();
          if((key==27)||(key<0)) break;
          h[i]=key;
          i++;
          if(i==10) {
              for(int j=0;j<10;j++) {
                  cout<<endl;
                  cout<<h[j];
              }
              cout<<endl;
              i=0;
          }
        }

    return 0;
}
2009-09-01 08:06
xufen340
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:166
专家分:1351
注 册:2009-8-7
收藏
得分:5 
给你个api函数写的程序,可以捕捉你的键盘,你就可以捕捉键盘的输入消息。
#include <windows.h>
#include <stdio.h>

VOID ErrorExit(LPSTR);
VOID KeyEventProc(KEY_EVENT_RECORD);

 
int main(VOID)
{
    HANDLE hStdin;
    DWORD cNumRead, fdwMode, fdwSaveOldMode, i;
    INPUT_RECORD irInBuf[128];
    int counter=0;
    //获得标准输入句柄
    hStdin = GetStdHandle(STD_INPUT_HANDLE);
    if (hStdin == INVALID_HANDLE_VALUE)
        ErrorExit("GetStdHandle");
    //保存旧模式
    if (! GetConsoleMode(hStdin, &fdwSaveOldMode) )
        ErrorExit("GetConsoleMode");
     //新输入模式
     fdwMode = ENABLE_WINDOW_INPUT;
     //设置新模式
     if (! SetConsoleMode(hStdin, fdwMode) )
        ErrorExit("SetConsoleMode");
     while (counter++ <= 100) {
           //获取输入
           if (! ReadConsoleInput(
                hStdin,      // input buffer handle
                irInBuf,     // buffer to read into
                128,         // size of read buffer
                &cNumRead) ) // number of records read
            ErrorExit("ReadConsoleInput");
            //根据输入大小,不要64k
            for (i = 0; i < cNumRead; i++) {
                if(irInBuf[i].EventType==KEY_EVENT) KeyEventProc(irInBuf[i].Event.KeyEvent);
            }

     }
     return 0;
}

VOID ErrorExit (LPSTR lpszMessage)
{
    fprintf(stderr, "%s\n", lpszMessage);
    ExitProcess(0);
}
               
VOID KeyEventProc(KEY_EVENT_RECORD ker)
{
    printf("Key event: ");

    if(ker.bKeyDown)
        printf("key pressed:%c\n",ker.uChar.AsciiChar);
    else printf("key released\n");
}
2009-09-01 09:49
快速回复:关于while输入的问题
数据加载中...
 
   



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

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