c语言scanf能获取字符,键盘上的上下左右能不能获取,怎么获取,获取后是什么格式的

c语言scanf能获取字符,键盘上的上下左右能不能获取,怎么获取,获取后是什么格式的,第1张

给你个完整的程序:

/

程序用于演示下拉菜单的 *** 作,实现了第一个菜单File的子菜单

/

#include <processh>

#include <stdlibh>

#include <stdioh>

#include <dosh>

#include <conioh>

#define key_down 80 / 向下箭头键 /

#define key_up 72 / 向上箭头键 /

#define key_esc 1 / ESC键 /

#define key_alt_f 33 / Alt + F/

#define key_alt_x 45 / Alt + X /

#define key_enter 28 / Alt + Enter /

/ 函数声明 /

int get_key();

void box(int startx,int stary,int high,int width);

main()

{

int i,key,x,y,l;

char menu[]={"File","Edit","Run","Options","Help","Setup","Zoom","Menu"};

char red[]={"F","E","R","O","H","S","Z","M"};

char f[]={"Load file", "Save file","Print ","Modify ", "Quit alt_x "};

char buf[16102],buf1[162];

while(1)

{

/ 设置屏幕背景颜色,并清除屏幕 /

textbackground(2);

clrscr();

/创建窗口用于显示菜单栏 /

window(1,1,80,1);

/ 设置文本属性:白底黑字 /

textbackground(15); / 白色背景 /

textcolor(0); / 黑色字体 /

clrscr(); / 清屏 /

window(1,1,80,1);

/ 显示菜单 /

for(i=0,l=0;i<8;i++)

{

/ 保存菜单第一个字母的位置,后面要用红色再打一次菜单的第一个字母 /

x=wherex(); / 当前光标 X坐标 /

y=wherey(); / 当前光标 Y坐标 /

/ 打印输出菜单 /

cprintf(" %s",menu[i]);

l=strlen(menu[i]);

gotoxy(x,y); / 移动光标到菜单开始位置 /

/ 用红色输出菜单的第一个字母 /

textcolor(RED);

cprintf(" %s",red[i]);

x=x+l+4;

gotoxy(x,y);

/ 将文本颜色修改为黑色 /

textcolor(BLACK);

}

x=0;

key=0;

while (bioskey(1)==0); / 等待键盘输入 /

/ 取得按键 /

key=get_key();

/ Alt + X 退出程序/

if(key==key_alt_x)exit(0);

/ Alt + F 显示File下拉菜单/

if(key==key_alt_f)

{

/ 设置文本属性:黑底白字 /

textbackground(0);

textcolor(15);

/ 打印输出 File /

gotoxy(2,1);

cprintf("%s",menu[0]);

/ 备份将要被File下拉菜单窗口覆盖的区域到内存buf /

gettext(4,2,18,12,buf);

/ 创建File下拉菜单窗口 /

window(4,2,19,8);

/ 设置文本属性:白底黑字 /

textbackground(15);

textcolor(0);

clrscr();

/ 画边框 /

window(4,2,19,9);

box(1,1,7,16);

/ 打印输出下拉菜单 /

for(i=2; i<7;i++)

{

gotoxy(2,i);

cprintf("%s",f[i-2]);

}

/ 备份下拉菜单的第一项到内存bufl,然后用 黑底白字(表示选中) 打印输出第一项 /

gettext(2,2,18,3,buf1);

textbackground(0);

textcolor(15);

gotoxy(2,2);

cprintf("%s",f[0]);

/ 处理按键 /

y=2;

key=get_key();

while(key!=key_alt_x&&key!=key_enter&&key!=key_esc)

{

/ 上下键 /

/ 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用 黑底白字 打印输出将要被选中的菜单项 /

if(key==key_up||key==key_down)

{

puttext(2,y,18,y+1,buf1); / 恢复之前 黑底白字的项 到 白底黑字/

if(key==key_up)

y=y==2 6:y-1; / 如果往上,到了最上面跳到最下面 /

if(key==key_down)

y=y==6 2:y+1; / 如果往下,到了最下面跳到最上面 /

gettext(2,y,18,y+1,buf1); / 备份当前项(白底黑字) /

textbackground(0); / 以下4行,用 黑底白字(表示选中) 打印输出 当前项 /

textcolor(15);

gotoxy(2,y);

cprintf("%s",f[y-2]);

}

key=get_key(); / 等待键盘输入 /

}

/ Alt + X 退出 /

if(key==key_alt_x)

exit(0);

/ Enter /

if(key==key_enter)

{

/ 下拉菜单处理 /

switch(y-1)

{

case 1: break;

case 2: break;

case 3: break;

case 4: break;

case 5: exit(0);

default: break;

}

}

/ ESC -关闭下拉菜单,恢复屏幕显示 /

else

{

window(1,1,80,2);

puttext(4,2,19,10,buf);

textbackground(15);

textcolor(0);

gotoxy(2,1);

cprintf("%s",menu[0]);

}

}

}

}

/ 得到按键值 /

int get_key()

{

union REGS rg;

rghah=0;

int86(0x16,&rg,&rg);

return rghah;

}

/ 画边框 /

void box(int startx,int starty,int high,int width)

{

int i;

gotoxy(startx,starty);

putch(0xda);

for (i=startx+1;i<width;i++)

putch(0xc4);

putch(0xbf);

for(i=starty+1;i<high;i++)

{

gotoxy(startx,i);

putch(0xb3);

gotoxy(width,i);

putch(0xb3);

}

gotoxy(startx+1,width);

putch(0xc0);

for(i=startx+1;i<width;i++)

putch(0xc4);

putch(0xd9);

return;

}

直接键入文本SayString "dkfhuuh36h"可以么?

测试过了,这个方式可以

Dim str

str = "dkfhu--uh36h"

length=Len(str)

for i=1 to length

KeyPress mid(str,i,1),1

next

你的意思应该是只输出前面的和后面的,中间的“——”不输出对吧?

那可以这样:

Dim str

str = "dkfhuuh36h"

length=Len(str)

for i=1 to length

if mid(str,i,1)<>"-" then

KeyPress mid(str,i,1),1

end if

next

以上就是关于c语言scanf能获取字符,键盘上的上下左右能不能获取,怎么获取,获取后是什么格式的全部的内容,包括:c语言scanf能获取字符,键盘上的上下左右能不能获取,怎么获取,获取后是什么格式的、按键精灵读取字符串、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9865649.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存