易码技术论坛

 找回密码
 加入易码
搜索
查看: 281224|回复: 6

LAVA怎么替代SCANF语句??另求一个钟表源代码~

[复制链接]
发表于 2006-12-30 11:15:04 | 显示全部楼层
scanf是函数,不是语句
发表于 2006-12-30 11:21:06 | 显示全部楼层
下lava手册看~
发表于 2006-12-30 11:28:18 | 显示全部楼层
到这里下载
http://lee.lava8.com
 楼主| 发表于 2006-12-30 16:57:15 | 显示全部楼层
谢谢哈哈,努力学习中~~~
 楼主| 发表于 2006-12-30 17:40:20 | 显示全部楼层
引用第3楼leesoft2006-12-30 11:28发表的“”:
到这里下载
http://lee.lava8.com
下了,正在学习~~谢谢
发表于 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后用编译器来编译.不嫌差就拿去用吧~!

原代码如下:
  1. char TEMP[27];
  2. char Input(char x,char y,char lenth,char mode)
  3. {
  4.   char NUM[10],len;
  5.   char i,key,inkey;
  6.   char shift,caps;
  7.   TEMP[0]=0;
  8.   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';
  9.   key=0;
  10.   len=0;
  11.   i=0;
  12.   caps=0;
  13.   shift=0;
  14.   if(mode==1)shift=1;
  15.   while(key!=ESC&&key!=ENTER)
  16.   {
  17.     inkey=0;
  18.     TextOut(x,y,TEMP,0);
  19.     if(shift)TextOut(0,68,"NUM",0);
  20.     else
  21.     {
  22.       if(caps)TextOut(0,68,"ENG",0);
  23.       else TextOut(0,68,"eng",0);
  24.     }
  25.     Block(0,68,17,79,2);
  26.     Refresh();
  27.     Box(x+len*6+1,y,x+len*6+6,y+10,1,2);
  28.     key=getchar();
  29.     if(key==ENTER||key==ESC)inkey++;
  30.     if(!mode&&key==SHIFT)
  31.     {
  32.       shift=(shift==0);
  33.       inkey++;
  34.     }
  35.     if(!shift&&key==CAPS)
  36.     {
  37.       caps=(caps==0);
  38.       inkey++;
  39.     }
  40.     if(key==F2||key==LEFT)
  41.     {
  42.       if(len)
  43.       {
  44.        TextOut(len*6+x-6,y," ",0);
  45.        TEMP[--len]=0;
  46.       }
  47.       else Beep();
  48.       inkey++;
  49.     }
  50.     if(inkey==FALSE)
  51.    {
  52.     if(lenth-len)
  53.     {
  54.       if(shift)
  55.       {
  56.        for(i=0;i<11;i++)
  57.        {
  58.         if(key==NUM[i])
  59.         {
  60.           TEMP[len]=48+i;
  61.           TEMP[++len]=0;
  62.         }
  63.        }
  64.       }
  65.       else
  66.       {
  67.        if(caps&&key>96&&key<123)key=key-32;
  68.        TEMP[len]=key;
  69.        TEMP[++len]=0;
  70.       }
  71.     }
  72.     else Beep();
  73.    }
  74.   }
  75.   inkey=len;
  76.   if(mode&&inkey==0)
  77.   {
  78.    inkey=1;
  79.    TEMP[0]=&#39;0&#39;;
  80.    TEMP[1]=0;
  81.   }
  82.   if(key==ESC)inkey=FALSE;
  83.   return inkey;
  84. }
  85. void main()
  86. {
  87.   int x;
  88.   ClearScreen();
  89.   SetScreen(1);
  90.   TextOut(0,0,"请输入字串:",0);
  91.   x=Input(66,0,14,1);
  92.   printf("The string len is %d.\n",x);
  93.   TextOut(0,13,TEMP,0x40);
  94.   getchar();
  95. }
复制代码

Input.rar

2 KB, 下载次数: 123

 楼主| 发表于 2006-12-30 11:01:47 | 显示全部楼层 |阅读模式
  我刚学C语言,有一些东西C和LAVA不一样,我听人说那个SCANF语句可以用GETCHAR替代,请教下怎么用好么,比如我要算一个加法,怎么用GETCHAR语句??

另外求一个钟表的源代码,以前的帖的那个我编译不了,也看不懂~~

还有,在C语言的教程里,没有关于图片的介绍啊,比如0XFF,3X00,之类的东东,谁能给我讲一下啊??谢谢了.

我现在在自学,用的教材是清华大学的那本可以砸死人的老砖头教材~~
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-29 21:00 , Processed in 0.012974 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表