- 注册时间
- 2006-7-15
- 最后登录
- 1970-1-1
|
发表于 2006-12-31 20:45:20
|
显示全部楼层
电脑上的C语言有stdio.h之类的头文件可以#include一下,不要以为scanf用起来就是是天经地义的,只不过人家已经给你写好了函数放在那里。LAVA好象更注重图形处理,这方面比较薄弱,大家都是自己写输入函数来用.
我这里有个简陋的输入函数,可以给你看看:
原型:Input(char x,char y,char lenth,char mode)
说明:该函数被include前要定义足够大的全局变量TEMP[len],输出的字串被保存在这里.
x,y为光标在屏幕上的初始位置;
lenth为输入字串的长度限制;
mode为输入格式,mode=1时只能输入数字,mode=0时可以输入英文字符和数字.
可惜不能输入汉字和符号,真想找个代码来瞧瞧.
附上Input.h,放在文件夹 函数库 里可以include后用编译器来编译.不嫌差就拿去用吧~!
原代码如下:- char TEMP[27];
- char Input(char x,char y,char lenth,char mode)
- {
- char NUM[10],len;
- char i,key,inkey;
- char shift,caps;
- TEMP[0]=0;
- NUM[0]='0';NUM[1]='b';NUM[2]='n';NUM[3]='m';NUM[4]='g';NUM[5]='h';NUM[6]='j';NUM[7]='t';NUM[8]='y';NUM[9]='u';
- key=0;
- len=0;
- i=0;
- caps=0;
- shift=0;
- if(mode==1)shift=1;
- while(key!=ESC&&key!=ENTER)
- {
- inkey=0;
- TextOut(x,y,TEMP,0);
- if(shift)TextOut(0,68,"NUM",0);
- else
- {
- if(caps)TextOut(0,68,"ENG",0);
- else TextOut(0,68,"eng",0);
- }
- Block(0,68,17,79,2);
- Refresh();
- Box(x+len*6+1,y,x+len*6+6,y+10,1,2);
- key=getchar();
- if(key==ENTER||key==ESC)inkey++;
- if(!mode&&key==SHIFT)
- {
- shift=(shift==0);
- inkey++;
- }
- if(!shift&&key==CAPS)
- {
- caps=(caps==0);
- inkey++;
- }
- if(key==F2||key==LEFT)
- {
- if(len)
- {
- TextOut(len*6+x-6,y," ",0);
- TEMP[--len]=0;
- }
- else Beep();
- inkey++;
- }
- if(inkey==FALSE)
- {
- if(lenth-len)
- {
- if(shift)
- {
- for(i=0;i<11;i++)
- {
- if(key==NUM[i])
- {
- TEMP[len]=48+i;
- TEMP[++len]=0;
- }
- }
- }
- else
- {
- if(caps&&key>96&&key<123)key=key-32;
- TEMP[len]=key;
- TEMP[++len]=0;
- }
- }
- else Beep();
- }
- }
- inkey=len;
- if(mode&&inkey==0)
- {
- inkey=1;
- TEMP[0]='0';
- TEMP[1]=0;
- }
- if(key==ESC)inkey=FALSE;
- return inkey;
- }
- void main()
- {
- int x;
- ClearScreen();
- SetScreen(1);
- TextOut(0,0,"请输入字串:",0);
- x=Input(66,0,14,1);
- printf("The string len is %d.\n",x);
- TextOut(0,13,TEMP,0x40);
- getchar();
- }
复制代码 |
|