读书人

一个关于conio.h文件里函数的有关问题

发布时间: 2012-02-13 17:20:26 作者: rapoo

一个关于conio.h文件里函数的问题,编译说找不到函数原型--请大家帮帮
下面这段代码里的textbackground,textcolor,cprintf都说没有函数原型,可是在conio.h文件里已经有他们的定义了,希望大家帮忙解答,小弟先谢谢!
还有我是新来的不知道怎么结贴,希望大家教教,不要见笑!我用的是Turbo c 3.1 路径配置应该没问题

#include <stdio.h>
#include <dos.h>
#include <conio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define HEX 0
#define DEC 1
#define OCT 2
#define BIN 3

int index=0, choice=0;
// 初始化鼠标器
void initmouse()
{
_AX = 0;
geninterrupt(0x33);
}

/*显示鼠标光标*/
void showmouse(void)
{
_AX = 1;
geninterrupt(0x33);
}

/*隐藏鼠标*/
void hidemouse(void)
{
_AX = 2;
geninterrupt(0x33);
}

/*取鼠标状态和鼠标位置*/
void getmouse(int *button, int *x, int *y)
{
_AX = 3;
_BX = 0;
geninterrupt(0x33);
*button = _BL;
*x = _CX;
*y = _DX;
}

/*设置程序中的数字字符表*/
int getnum(char c)
{
int j;
char alpha_set[36] = "0123456789abcdefghijklmnopqrstuvwxyz ";
for (j=0;j <36;j++)
{
if (alpha_set[j] == c)
break;
}

return j;
}

/*把任意radix进制的数,转换为十进制数*/
unsigned long convert_to_decimal(char *_num, int radix)
{
int i, len;
unsigned long dec=0;
len = strlen(_num);
len--;

for(i=0;_num[i]!=NULL;i++,len--)
{
dec += (getnum(_num[i])*pow(radix,len);
}

return dec;
}

/*在给定的坐标(x,y)的位置显示一个字符串*/
void display(int x,int y,char string[80])
{
gotoxy(x, y);
cprintf(string); //
}

/*清屏,并把背景色设置为青绿色*/
void make_screen_cyan(void)
{
textbackground(CYAN);
clrscr();
}

/*绘制程序的起始界面*/
void start_screen(void)
{
index = 0;
hidemouse();
make_screen_cyan();
textbackground(RED);
textcolor(BLACK);
display(20, 1, "Radix Converter by NJLOY MONDAL. ");
display(10, 2, "Email:-yiwei@zju.edu.cn ");
display(30, 3, "Please Escape to Quit! ");
textbackground(CYAN);
display(10, 5, "Hexadecimal:- ");
display(10, 7, "Decimal :- ");
display(10, 9, "Octal :- ");
display(10, 11, "Binary :- ");


textbackground(BLUE);
display(23, 5, " ");
display(23, 7, " ");
display(23, 11, " ");

if (choice == HEX)
gotoxy(24, 5);
else if (choice==DEC)
gotoxy(24, 7);
else if (choice==OCT)
gotoxy(24, 9);
else if (choice==BIN)
gotoxy(24, 11);
showmouse();
}

//主函数
void main()
{
char test[80]= "\0 ";
char buffer[80];
char ch, *charhex, *chardec, *charoct, *charbin;
int button, mousex, mousey, x, y;
unsigned long deci;
initmouse();
start_screen();
showmouse();
while(1)
{
if (kbbit())
{
ch = getch();
//ESCAPE 键的ASCII值是27,如果按Esc键,程序结束
if (ch == 27)
break;
if ( (ch == '\b ') && (wherex()> =24) )
{
//把光标退后一格,并且放一个空格在哪里
printf( "\b ");
printf( "%c ", 255);
//再把光标退后一格,弹出删除的字符
printf( "\b ");
if (index != 0)
index--;
text[index] = NULL;

}
else if ( (wherex()> =24) && (ch> = '0 ') && (ch <= 'f ') )
{
printf( "%c ", ch);
//把字符放入字符数组
text[index]=ch;
//把数组最后一位置零
text[index+1]=NULL;
}

//保存当前的坐标
x=wherex();
y=wherey();
/*程序首先把字符串通过convert_to_decimal()转化为十进制数,之后调用
stdlib.h定义的ltoa()把十进制数转化为其他进制数,比如二进制,八进制,十六进制登,*/
switch(choice)
{
case HEX:
deci = convert_to_decimal(text, 16);
gotoxy(24, 7);
printf( "%ld ", deci);
gotoxy(24, 11);
printf( "%s ", ltoa(deci, buffer, 2));
gotoxy(24, 9);
printf( "%s ", ltoa(deci, buffer, 8));
break;
case DEC:
deci = atol(text);
gotoxy(24, 5);
printf( "%s ", ltoa(deci, buffer, 16));
gotoxy(24, 9);


printf( "s ", ltoa(deci, buffer, 8));
gotoxy(24, 11);
printf( "%s ", ltoa(deci, buffer, 2);
break;
case OCT:
deci = convert_to_decimal(text, 8);
gotoxy(24, 7);
printf( "%ld ", deci);
gotoxy(24, 5);
printf( "%s ", ltoa(deci, buffer, 16));
gotoxy(24, 11);
printf( "%s ", ltoa(deci, buffer, 2));
break;
case BIN:
deci = convert_to_decimal(text, 2);
gotoxy(24, 5);
printf( "%s ", ltoa(deci, buffer, 16));
gotoxy(24, 7);
printf( "%ld ", deci);
gotoxy(24, 9);
printf( "%s ", ltoa(deci, buffer, 8);
break;
}

gotoxy(x,y);
}
getmouse(&button, &mousex, &mousey);
mousex++;
mousey++;
///下面的代码检测在什么地方按了什么按钮
if ( (mousex/8> 23) && (mousex/8 <50) && (mousey/16==2) && (button&1==1) )
{
choice=HEX;
start_screen();
}
else if ( (mousex/8> 23) && (mousex/8 <50) && (mousey/16==3) && (button&1==1) )
{
choice = DEC;
start_screen();
}
else if((mousex/8> 23) && (mousex/8 <50) && (mousey/16==4) && (button&1==1) )
{
choice=OCT;
start_screen();
}
else if ((mouse/8> 23) && (mousex/8 <50) && (mousey/16==5) && (button&1==1) )
{
choice=BIN;
start_screen();
}
}
}

------解决方案--------------------


_AX = 3;
_BX = 0;

都没定义啊
[解决办法]
只能是环境配置的问题了 ~
[解决办法]
厄,那些 在头文件中有定义了 ~
[解决办法]
错误挺多的哦。

自己查一下吧

读书人网 >C语言

热点推荐