从屏幕读一行时,怎样预先在键盘缓冲区中放一些字符并显示在屏幕上,并且用户可以退格清除?

iwillalwaysloveyou 2007-09-23 11:50:39
如题,谢了
...全文
379 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iwillalwaysloveyou 2007-09-23
  • 打赏
  • 举报
回复
说得有点不清楚,应该这样:

从键盘接收一行字符时,怎样预先在键盘缓冲区中放一些字符并显示在屏幕上,并且用户可以退格清除这些字符?
iwillalwaysloveyou 2007-09-23
  • 打赏
  • 举报
回复
错了,调read之前需要注册热键:

HotKeyConsoleReader reader;
reader.RegHotKeys(0x3c,0x3d,0x3e,0x3f,0x43,0x44,0x85,0x86,0x00);
char hotkey = reader.Read(buffer,sizeof(buffer));
switch(hotkey)
{
case 0://no hotkey
//...do something
break;
case 0x3c://F1:
//...do something
break;
//...
}
iwillalwaysloveyou 2007-09-23
  • 打赏
  • 举报
回复
用法如下,类似cin.getline():

HotKeyConsoleReader reader;
char hotkey = reader.Read(buffer,sizeof(buffer));
switch(hotkey)
{
case 0://no hotkey
//...do something
break;
case 0x3c://F1:
//...do something
break;
//...
}
yanliwenwen 2007-09-23
  • 打赏
  • 举报
回复
good
iwillalwaysloveyou 2007-09-23
  • 打赏
  • 举报
回复
不用劳烦大家了,你们没有明白我的意思.

刚刚写了一个类,可以从控制台接收一行字符或者热键,有人感兴趣吗
_石头_ 2007-09-23
  • 打赏
  • 举报
回复
搂住的问题说得很模糊,按照自己的理解写了几行代码,不知道是不是搂住想要的!
#include<stdio.h>
main()
{
char *ptr=(char *)malloc(80),len=1;
*ptr='A'; /*预先存放的字符*/
*(++ptr)='B';
do{
*(++ptr)=getch();
printf("%c",*ptr);
len++;
}while(*ptr-13) ; /*回车退出输入*/
*ptr='\0';
printf("Input string =%s\n",ptr-len); /*输出字符串*/
getch();
}
至于从键盘输入还是从哪里读取字符,那原理都差不多!

还有一种办法就是直接操作流文件(如stdin 、stdout等),具体怎么做没有尝试过,仅供搂住参考!
waterfield 2007-09-23
  • 打赏
  • 举报
回复
表述有问题,找c++primer 看看,里面似乎有个这样的东东。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧